【发布时间】:2016-02-26 19:29:24
【问题描述】:
我发现了与我的问题非常相似的问题和答案,但没有解决我的具体问题。用我的宏我想说:
如果“M”列,分析工作表上的第 6 行不为空且“B”列第 6 行和“C”列第 6 行和“D”列第 6 行(全部在分析工作表上)为空且“列” C" 固定成本测试数据工作表上的第 6 行不为空,并且固定成本测试数据上的“C”列第 6 行的值 >= 今天的日期,那么我想要分析中第 6 行的“M”列的值要计算的工作表:
Sheets("Analysis Worksheet").Range("M" & i).Value = (Sheets("Analysis Worksheet").Range("M" & i).Value - Sheets("Fixed Cost Test Data").Range("B" & j).Value) - ((Sheets("Analysis Worksheet").Range("M" & i).Value - Sheets("Fixed Cost Test Data").Range("B" & j).Value) * (Sheets("Analysis Worksheet").Range("E" & i).Value * 0.01))
我想要 i = j。 i 和 j 是相同的数字/相同的行。
我需要在我的代码中进行哪些更改,以便在分析工作表上对一行执行计算时,它使用固定成本测试数据工作表上的相同行的值,并且行在向下移动时保持“同步”一起工作表?
这是我的宏代码:
Sub ReduceCost_Percentage()
With Worksheets("Analysis Worksheet")
Dim i As Long
Dim LastRow As Long
LastRow = Range("X" & Rows.Count).End(xlUp).Row
Dim j As Long
j = i
Dim LRow As Long
LRow = Worksheets("Fixed Cost Test Data").Range("C" & Rows.Count).End(xlUp).Row
For i = 5 To LastRow
For j = i To i
If Sheets("Analysis Worksheet").Range("E" & i).Value > 0 And IsEmpty(Sheets("Analysis Worksheet").Range("B" & i).Value) _
And IsEmpty(Sheets("Analysis Worksheet").Range("C" & i).Value) And IsEmpty(Sheets("Analysis Worksheet").Range("D" & i).Value) _
And Not IsEmpty(Sheets("Analysis Worksheet").Range("M" & i).Value) And Not IsEmpty(Worksheets("Fixed Cost Test Data").Range("C" & j).Value) And (Date >= Worksheets("Fixed Cost Test Data").Range("C" & j).Value) Then
Sheets("Analysis Worksheet").Range("M" & i).Value = (Sheets("Analysis Worksheet").Range("M" & i).Value - Sheets("Fixed Cost Test Data").Range("B" & j).Value) - ((Sheets("Analysis Worksheet").Range("M" & i).Value - Sheets("Fixed Cost Test Data").Range("B" & j).Value) * (Sheets("Analysis Worksheet").Range("E" & i).Value * 0.01))
ElseIf Sheets("Analysis Worksheet").Range("E" & i).Value > 0 And IsEmpty(Sheets("Analysis Worksheet").Range("B" & i).Value) _
And IsEmpty(Sheets("Analysis Worksheet").Range("C" & i).Value) And IsEmpty(Sheets("Analysis Worksheet").Range("D" & i).Value) _
And Not IsEmpty(Sheets("Analysis Worksheet").Range("M" & i).Value) And (IsEmpty(Worksheets("Fixed Cost Test Data").Range("C" & j).Value) Or Worksheets("Fixed Cost Test Data").Range("C" & j).Value > Date) Then
Sheets("Analysis Worksheet").Range("M" & i).Value = Sheets("Analysis Worksheet").Range("M" & i).Value - (Sheets("Analysis Worksheet").Range("M" & i).Value * (Sheets("Analysis Worksheet").Range("E" & i).Value * 0.01))
End If
Next j
Next i
For i = 5 To LastRow
For j = i To i
If Sheets("Analysis Worksheet").Range("E" & i).Value > 0 And IsEmpty(Sheets("Analysis Worksheet").Range("B" & i).Value) _
And IsEmpty(Sheets("Analysis Worksheet").Range("C" & i).Value) And IsEmpty(Sheets("Analysis Worksheet").Range("D" & i).Value) _
And Not IsEmpty(Sheets("Analysis Worksheet").Range("N" & i).Value) And Not IsEmpty(Sheets("Fixed Cost Test Data").Range("C" & j).Value) And (Date >= Sheets("Fixed Cost Test Data").Range("C" & j).Value) Then
Sheets("Analysis Worksheet").Range("N" & i).Value = (Sheets("Analysis Worksheet").Range("N" & i).Value - Sheets("Fixed Cost Test Data").Range("B" & j).Value) - ((Sheets("Analysis Worksheet").Range("N" & i).Value - Sheets("Fixed Cost Test Data").Range("B" & j).Value) * (Sheets("Analysis Worksheet").Range("E" & i).Value * 0.01))
ElseIf Sheets("Analysis Worksheet").Range("E" & i).Value > 0 And IsEmpty(Sheets("Analysis Worksheet").Range("B" & i).Value) _
And IsEmpty(Sheets("Analysis Worksheet").Range("C" & i).Value) And IsEmpty(Sheets("Analysis Worksheet").Range("D" & i).Value) _
And Not IsEmpty(Sheets("Analysis Worksheet").Range("N" & i).Value) And (IsEmpty(Sheets("Fixed Cost Test Data").Range("C" & j).Value) Or Sheets("Fixed Cost Test Data").Range("C" & j).Value > Date) Then
Sheets("Analysis Worksheet").Range("N" & i).Value = Sheets("Analysis Worksheet").Range("N" & i).Value - (Sheets("Analysis Worksheet").Range("N" & i).Value * (Sheets("Analysis Worksheet").Range("E" & i).Value * 0.01))
End If
Next j
Next i
'....Continues until Cell "X"
End With
End Sub
【问题讨论】:
-
tl;dr 但如果你想要同一行,从同一行开始并平均递增?
-
@findwindow,您能否详细说明您的答案?你所说的“平均增加”是什么意思?
-
看起来你已经是了。
For j = i To i如果i=5,那么你在做j=5 to 5不是吗?编辑:我认为你只需要第三个增量变量。 -
你没有实例化你的变量。首次分配
j = i时,i为空。