Sumprod评估给出名称vba

时间:2016-02-23 15:54:33

标签: excel vba

我试图在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)

1 个答案:

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