我试图在vba中使用Sumproduct功能。 首先我试过这个:
sht.Cells(LastRowsht + 1, 6) = Application.SUMPRODUCT((Transaction = "Vente") * (TickerD2 = sht.Cells(LastRowsht + 1, 2)), ValeurFlux))
如果交易,TickerD2和ValeurFlux是相同长度的范围(它是整个列)。 我在许多论坛上都看到,当有标准时,vba中的sumproduct是有问题的。
人们建议使用。评估
sht.Cells(LastRowsht + 1, 6) = Application.Evaluate("SOMMEPROD((Transaction = "Vente") * (TickerD2 = sht.Cells(LastRowsht + 1, 2)), ValeurFlux)")
但它给出了名字。 我使用SOMMEPROD,因为我的Excel是法语,所以我想我需要翻译。 我认为公式中存在拼写错误但我不熟悉评估。
谢谢。
这是我在excel中使用的公式,它有效! 我不知道为什么在vba中它不能
=SOMMEPROD((Data2!D:D="Achat")*(Data2!C:C=B8);Data2!I:I)
答案 0 :(得分:1)
我看到的两个主要问题是,在引用字符串中使用时,您必须加倍引号,并且您需要sht.Cells(LastRowsht + 1, 2)
Dim sumproductFormula As String
sumproductFormula = "SUMPRODUCT((Transaction=""Vente"")*" & _
"(TickerD2=" & sht.Cells(LastRowsht + 1, 2).Address & ")," & _
"ValeurFlux)"
sht.Cells(LastRowsht + 1, 6) = Application.Evaluate(sumproductFormula)
,而不是Range.Address property本身。
{{1}}
我发现在分配给字符串类型var的片段中构建长字符串更容易,只需使用Range.Cells property中的var。