有人可以帮我实现吗?
Range("B3").Formula = "=SUMIF(Active.Select!$A:$A,Results.select!$A3,Active.select!B:B)"
我已将Active和Results定义为WorkSheet,我的目标是对它们进行动态引用,以便宏cna可以在工作簿的任何工作表上运行,而不会有任何静态参考Sheet1!
如果我尝试运行我写的内容,他要求我通过一个开放的窗口提供Active和Results
我知道这可能是一个愚蠢的问题,但我刚刚开始
答案 0 :(得分:1)
如果删除工作表名称,则公式将引用它所在的工作表。
Range("D2").Formula = "=SUMIF($A:$A,$E$1,$B:$B)"
工作表有一个Evaluate方法,它将返回公式的值
注意:我没有使用Range("B3").Formula = "=SUMIF($A:$A,$A3,B:B)"
,因为它是循环引用。
答案 1 :(得分:0)
假设Active
和Results
都是Worksheet
个对象,那么如果您希望创建公式以进入ActiveSheet
的单元格B3,请尝试以下操作:< / p>
Range("B3").Formula = "=SUMIF('" & Active.Name & "'!$A:$A,'" & Results.Name & "'!$A3,'" & Active.Name & "'!B:B)"
如果您想获取该值并将其用于VBA中的某些内容,请尝试以下操作:
Dim sumIfResult As Double
sumIfResult = Application.WorksheetFunction.SumIf(Active.Range("$A:$A"),Results.Range("$A3"),Active.Range("B:B"))