This is what would be the output
我在单元格“C1”中有这个公式。将column2中的值与column1值进行平均。它给出了我需要做的事情。但是我希望将这项工作变成vba代码。
任何人都可以帮助将其添加到代码中。当我们在公式中有参考单元时是否可能?还是我们需要去更复杂的代码?
=IF(A2<>A1,AVERAGEIF(A2:INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1),MATCH(TRUE,(INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1)<>A2,)),0)),A2,B2:INDEX($B2:INDEX(B:B,MATCH(1E+99,A:A)+1),MATCH(TRUE,(INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1)<>A2,)),0))),"")
答案 0 :(得分:3)
以下是一种方法 C1 的计算是 VBA : <击> 撞击>
<击>Sub DoingC1Job()
Dim s As String, s2 as string
s = "=IF(A2<>A1,AVERAGEIF(A2:INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1),MATCH(TRUE,(INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1)<>A2,)),0)),A2,B2:INDEX($B2:INDEX(B:B,MATCH(1E+99,A:A)+1),MATCH(TRUE,(INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1)<>A2,)),0))),??)"
s = Replace(s, "??", Chr(34) & Chr(34))
s2 = Evaluate(s)
MsgBox s2
End Sub
?? 只是将双引号引入字符串的简单方法。
击><击> 撞击>
由Leviathan改进:
Sub DoingC1Job()
Dim s As String, v As Variant
s = "=IF(A2<>A1,AVERAGEIF(A2:INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1),MATCH(TRUE,(INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1)<>A2,)),0)),A2,B2:INDEX($B2:INDEX(B:B,MATCH(1E+99,A:A)+1),MATCH(TRUE,(INDEX($A2:INDEX(A:A,MATCH(1E+99,A:A)+1)<>A2,)),0))),"""")"
v = Evaluate(s)
MsgBox v
End Sub