Excel - 通过公式创建 UDF

Excel - 通过公式创建 UDF

我经常遇到这样的情况:编写非常相似但冗长的公式,这些公式使用相同的范围作为多个函数的参数。

举一个简单的例子,考虑:

=(A+B)/B

有没有什么简单的方法可以创建一个 UDF,例如:

=PCTCHANGE(A,B)

这可以执行与上述完全相同的计算吗?我意识到使用简单的算术运算符这很简单,但是有没有简单的方法将更复杂的东西包装成一个简单的函数?

=IF(""=$U30,"",G30/IF(ROW(G30)-MONTH(U30)<ROW(K$8),G$5,OFFSET(G30,-MONTH(U30),0))-1)

我想避免将公式转换为 Application.WorksheetFunction 调用。我假设 Application.Evaluate 可能是解决方案的一部分,但我不知道如何通过 UDF 将范围传递给它。

答案1

您将需要打开 VBA 并从模块创建 UDF。

键入 ALT-F11 打开 VBA 编辑器。在您的项目下,右键单击并选择插入 --> 模块

在 VBA 编辑器窗口中输入以下内容

Function PctChange(A As Double, B As Double) As Double
   PctChange = (A + B) / B
End Function

调用该函数时,请执行通常的操作。在任何单元格中键入 PctChange(CellA, Cell B)。

相关内容