不使用 VBA 的自定义用户函数

Dak*_*taD 10 vba worksheet-function microsoft-excel

是否可以在不使用 VBA 的情况下在 Excel 中创建自定义用户函数?
我的问题是我有一长串标准的 excel 函数串在一起形成一个很长的函数。这个函数在我的工作簿中的 25 个不同的工作表中使用。如果我需要对其进行更改,我只想在一个地方进行更改,并自动将更改传播到所有工作表中。

例如,一个简单而琐碎的情况是将 SUM() 的结果加一,即。SUM(mySeries)+1,并将其称为新函数 MYSUM()。

由于可能出现的潜在错误和增加的复杂性,我对将长公式转换为 VBA 犹豫不决。

小智 11

是的,如果您使用Excel Named Formulas是可能的。

例如,假设您需要计算工作簿中不同位置的两个连续列 ( A5:Ax - B5:Bx )的总和之间的差值(x是每列的最后一行):

因此,您在A11中将一个名为diff(可以使用任何名称)的名称定义为=Sum(A$5:A10)-Sum(B$5:B10),假设数据从第5行开始直到上一行。它可以是任何单元格,而不仅仅是A11,但定义以相同的方式更改。

不幸的是,Excel 2010插入了绝对前缀 ( $ ) 和工作表前缀,因此您需要擦除前缀,但保留感叹号并擦除大多数$字符。

移动公式时,大多数引用都是相对的。所以它总是计算当前列和下一行之间的差异,从第5行开始,直到总行之前的行。

因此,如果您有C5D100之间的数据,您只需在C101 中放入=Diff并计算Sum(C5:C100) - Sum(D5:D100)

显然,您可以在命名公式中使用本地或全局名称,就像您在问题中提到的那样。

您可以在命名公式中阅读更多详细信息。