Excel VBA中的sum积公式数组

Excel VBA中的sum积公式数组,excel,excel-formula,vba,Excel,Excel Formula,Vba,当我直接输入Excel时,同样的公式也适用,但当通过VBA输入时,我没有得到任何结果 Excel公式: ActiveSheet.Evaluate("=SUMPRODUCT((""" & Source1_Val & """ = " & Target1 & ")*(""" & Source2_Val & """ = " & target2 & ")*ROW(" & Target1 & "))") 你在找什么 列1等是否

当我直接输入Excel时,同样的公式也适用,但当通过VBA输入时,我没有得到任何结果

Excel公式:

ActiveSheet.Evaluate("=SUMPRODUCT((""" & Source1_Val & """ = " & Target1 & ")*(""" & Source2_Val & """ = " & target2 & ")*ROW(" & Target1 & "))")
你在找什么


列1等是否都是定义的名称?然后:

Range("AD:AD").Select
Range("AE:AE").Select

答案相当愚蠢。从文本中删除
=
符号

假设单元格
D7:D9
以及
E7:E9
包含数值,则以下函数在即时窗口中运行良好

.Evaluate("=SUMPRODUCT((Column1=Source1_Val)*(Column2=Source2_Val)*ROW())")
编辑:假设下面的所有变量名称都是字符串

?Evaluate("SUMPRODUCT(D7:D9, E7:E9)")
公式中不需要包含额外的双引号

EDIT2:根据所附文件,下面是显示其工作原理的代码

dim myFormula as string
myFormula =  "SUMPRODUCT((" & Source1_Val & " = " & Target1 & ")" _
& " * (" & Source2_Val _
& " = " & target2 & ")*ROW(" & Target1 & "))"

ActiveSheet.Evaluate(myFormula)

不,事实上,当我使用这个乘积公式中的范围时,我们得到了一个错误。我确实定义了一个名称范围并使用了它,但当我在formula bar中使用它而不是在VBA中使用它时,它就起作用了。因此,我正在寻找一个我可以替换AD:AD和AE:AEcolumn1和column2保存已定义名称(name1和name2是其已定义名称-列标题)的东西。我希望使用变量更改每次运行的名称。但您没有将
.Evaluate
分配给任何内容或对其执行任何操作。您希望VBA语句会发生什么情况?@Srivardhan:尝试将公式文本放入字符串变量中,如上所述。如果它抛出错误,请使用
msgbox(myFormula)
打印公式-您可以将其文本与您在公式栏中键入的内容进行比较。当我尝试将该行号分配给变量时,我遇到了一个2015错误。MSGBOX给出了正确的公式THOUGH@Srivardhan:所有变量是否都是字符串?每个变量包含什么值?请把它贴在这里。
行(L1:L33)
返回什么?这有什么用?这是一个两列查找,当我解(“&Source1\u Val&“=”&Target1&”)和(“&Source2\u Val&“=”&Target2&”)中的每一个时,我得到了false的true,其中intrun得到了匹配的行。如果可以的话,这些值具有类似“ABC1234”的字符串,可以共享工作簿,也可以给出单元格数据(存在)和所需输出的示例。我猜
SUMPRODUCT
不是您所需要的。
dim myFormula as string
myFormula =  "SUMPRODUCT((" & Source1_Val & " = " & Target1 & ")" _
& " * (" & Source2_Val _
& " = " & target2 & ")*ROW(" & Target1 & "))"

ActiveSheet.Evaluate(myFormula)
option explicit
Sub TestFormulaStringUsingEvaluate()
Dim formula As String

Dim source1_Val As String
Dim source2_Val As String
Dim target1 As String
Dim target2 As String

'** Fill in the values for the following 4 variables
source1_Val = "Source!Q2"
target1 = "Target!Q$1:Q$10"

source2_Val = "Source!L2"
target2 = "Target!L$1:L$10"


formula = "SUMPRODUCT((" & source1_Val & "= " & target1 & ") " _
& "*(" & source2_Val & "=" & target2 & ") " _
& "* ROW(" & target2 & "))"

MsgBox Application.Evaluate(formula)
End Sub