【问题标题】:Using array-summation for UDF对 UDF 使用数组求和
【发布时间】:2020-04-24 00:09:24
【问题描述】:

我正在尝试使这个公式全球化:

{=SUM(Array1*Array2)}

不是因为我需要这个确切的公式,而是因为我试图弄清楚 UDF 的语法是如何工作的。我希望结果看起来有点像这样::

Public Function UDF1(MyArray1 As Range, MyArray2 As Range)
UDF1 = WorksheetFunction.Sum(MyArray1 * MyArray2)
End Function

但这不起作用?有没有人可以帮助我使用正确的 UDF 语法

【问题讨论】:

  • 你想达到什么目的? SUMPRODUCT?
  • 您不能在 VBA 中使用 * 运算符来乘以数组。
  • @SJR 我正在尝试制作类似于 SUMPRODUCT 公式的复杂函数。这是一个示例:{=DaysYearSUM(((30+Data[K1])*HRTData[CH4 生产力])/(30*(Data[K1]+HRT))*Feed[Prim -FV/d]*数据[TS/FV])}
  • @Rory。然后如何在 VBA 中乘以数组?
  • 循环并乘以每个元素。

标签: excel vba user-defined-functions


【解决方案1】:

我认为你的 UDF1 中的 UDF 名称也不起作用,所以请更改名称。

可以将公式包装在 Evaluate 调用中,如下所示:

Public Function testing(MyArray1 As Range, MyArray2 As Range)
    testing = Evaluate("SUM(" & MyArray1.Address & "*" & MyArray2.Address & ")")
End Function

【讨论】:

  • 没问题。但是符号有点复杂。特别是对于更复杂的功能。
猜你喜欢
  • 2019-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-05
  • 2016-09-22
相关资源
最近更新 更多