我的 Excel 工作簿包含多个名称以相同单词开头的单元格:
"capex_"
。
我想用公式对所有这些单元格求和。
这是我尝试过的(没有成功):
=SUM(INDIRECT("capex_*"))
严格使用工作表函数时我不确定这一点,但是如果您愿意冒险使用 VBA,那么您可以创建自定义工作表函数。
Option Explicit
Public Function SumNamedCells(ByVal Pattern As String) As Double
Application.Volatile
Dim retVal As Double
Dim n As Name
For Each n In ThisWorkbook.Names
If n.Name Like Pattern Then retVal = retVal + Range(n).Value
Next n
SumNamedCells = retVal
End Function
这将循环遍历工作簿中的每个命名范围,并对符合输入模式的每个单元格求和。
在工作表中,您可以使用
=SumNamedCells("capex_*")
来获得预期结果。
由于这是一个利用循环来完成此任务的 VBA 函数,因此与使用内置工作表函数相比,它的效率可能较低 - 特别是当您有大量命名范围时。
我在该函数的第一行中使用了
Application.Volatile
,这一事实进一步放大了这一点,这使得该函数可以在工作簿中每次发生更改时重新计算。如果您想提高性能,可以删除此行 - 但请注意,该函数不会在手动刷新之间(或打开工作簿时)保持更新。