将参考单元格公式添加到代码

时间:2016-04-29 22:28:08

标签: vba excel-vba excel

enter image description here

enter image description here

This is what would be the output

enter image description here

我在单元格“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))),"")

1 个答案:

答案 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