我不确定这是否会采用公式或VBA编码,但要么会有所帮助。这很难解释,但这里是我能找到的最简单的方法:如果列“A”包含某些文本(在本例中为“ZS”),请参阅第3列中相应行的值,如果是当前的值与前一个“ZS”行对应的值发生了变化,当然使用不同的参考单元计算“=((C10 * 0.11)+(C11 * 0.22)-H9 * 0.1)”。我一直在尝试解决这个问题一段时间了,任何帮助都表示赞赏!
答案 0 :(得分:0)
VBA将是最简单,最干净的方式。这是你正在寻找的吗?我不确定你的"参考"单元格正在引用,但我使用了您的示例值。
Sub test1
Dim ZS1 As Range, ZS2 As Range, val1 as range, val2 as range
Dim ws as worksheet
Set ws = ThisWorkbook.ActiveSheet
Set val1 = ws.Range("$C$10")
Set val2 = ws.Range("$H$9")
'Find first ZS
For Each ZS1 in ws.Range(ws.Cells(2, 1), ws.Cells(ws.Cells(Rows.Count, 1).End(xlUp).Row, 1))
If ZS1 = "ZS" Then
'Step back to find previous ZS value
For i = ZS1.Row - 1 to 1 Step -1
Set ZS2 = ws.Cells(i, 1)
If ZS2.Value = "ZS" Then
'If column 3 value in first ZS row is not equal to column 3 value in previous row then
If ZS1.Offset(0,2).Value <> ZS2.Offset(0,2).Value Then
MsgBox ((val1.Value * 0.11) + (val1.Offset(1,0).Value * 0.22)-val2.Value * 0.1)
Exit For
Else
Exit For
End If
End If
Next
End If
Next ZS1
End Sub