将参考单元格公式添加到代码中 [英] Add a reference cell formula in to a code

查看:140
本文介绍了将参考单元格公式添加到代码中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述





我在单元格C1中有这个公式要平均列2中的值,相对于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)LT;> 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))),))


解决方案

这里有一种方法 C1 的计算是> VBA :

  Sub DoingC1Job()
Dim s As String ,s2作为字符串
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)LT;> 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)LT; > A2)),)),))
s =替换(s,??,Chr(34)& Chr(34))
s2 =评估)
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)LT;> 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)LT;> A2, )),0))),)
v =评估
MsgBox v
End Sub


enter image description here

This is what would be the output

I have this formula in cell "C1" To average the values in column2 with respected to column1 values.It gives what I need to do. But I want to get this work into a vba code.

Can anyone help to put this into a code. Is it possible when we have reference cells in the formula?? or do we need to go to more complex code??

=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))),"")

解决方案

Here is one way to do C1's calculation is 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

The ?? is just an easy way to get the double-quotes into the string.

As improved by 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

这篇关于将参考单元格公式添加到代码中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆