【发布时间】:2017-12-11 00:36:45
【问题描述】:
我想看看是否可以在 VBA 中创建 sumproduct 函数。我可以制作一个在 Excel 中完美运行的文件,如下所示:
=SUMPRODUCT(C2:C19,((D2:D19="text1")*12+(D2:D19="text2")*4+(D2:D19="text3")*2))
我有 2 列,目标是根据来自另一列单元格的不同文本,将第一列中的一个单元格与一个数字相乘。如上图所示完成。但是,由于我经常使用它,实际上每次都需要一些时间来编写,所以我想看看我是否可以在 VBA 中创建一个可以选择 x(第一列)和 y(第二列)的函数和结果会在那里。到目前为止,我一直在做这件事,但还没有成功:
Function xxx(x, y)
xxx = Application.WorksheetFunction.SumProduct(x, ((y = "text1") * 12 + y = "text2" * 4 + y = "text3" * 2))
End Function
我无法对行和列进行任何具体引用,例如 C2:C19,因为它变化很大,所以我只想选择第一列 (x) 和第二列 (y) 作为范围。有什么建议吗?谢谢阅读! :)
【问题讨论】:
-
“无法让它工作”。那么会发生什么?
-
如果 x 是 A 列,y 是 B 列,(所以你调用 xxx("A","B") 来使用你的函数,那么你的 x 和 y 只是字符串,你需要把它们变成一个范围。即在你有 x 的地方,使用 worksheet.range(x & ":" & x)。(给你 worksheet.range("A:A")。
-
您可以将函数构建为字符串并使用
Worksheet.Evaluate方法在VBA中调用它。
标签: excel vba sum product worksheet-function