Excel:总结这一行的命名的范围列

我有一个dynamic数量的列,我通过VBA添加。 这些列是一个命名的范围。 我如何总结该命名区域中所有列的当前行?

例:

____| A | B | C | D | E | 1 | | 123 | 100 | aaa | 223 | 2 | | 111 | 101 | eee | 212 | 3 | | 112 | 102 | xxx | 214 | 4 | | 197 | 103 | yyy | 300 | 5 | | 176 | 104 | zzz | 280 | 

比方说列BC是一个名为ser_ua的命名区域。 我不知道在这个命名范围内是否没有列,或者是否有50列。 我怎么能总结当前行“切片”(在这种情况下) E

您可以使用INDEX函数 “切分”一列,使用MATCH函数查找第一行中的最后一个数字。

 =sum(index(ser_ua, 0, match(1e99, 1:1))) 

使用INDEX的column_num参数可以使用硬编码数字或某个返回数字的公式来“切分”任何其他列。

SUM超过INDEX切片

如果ser_ua是从B2开始的命名范围,则不能要求第1行中最后一个数字的列号。您将不得不要求ser_ua第一行上的最后一个数字。

 =sum(index(ser_ua, 0, match(1E+99, index(ser_ua, 1, 0)))) 

SUM超过INDEX切片

既然你已经在使用VBA了,

 Public Function SumAcross(N As Long) As Variant Dim wf As WorksheetFunction, RangeToAdd As Range Set wf = Application.WorksheetFunction Set RangeToAdd = Intersect(Rows(N), Range("ser_ua")) SumAcross = wf.Sum(RangeToAdd) End Function 

在这里输入图像说明

编辑#1:

为了改善UDF的波动性,我们可以通过它的检查范围:

 Public Function SumAcross(r As Range, N As Long) As Variant Dim wf As WorksheetFunction, RangeToAdd As Range Set wf = Application.WorksheetFunction Set RangeToAdd = Intersect(Rows(N), Range("ser_ua")) SumAcross = wf.Sum(RangeToAdd) End Function 

并在一个典型的工作表单元格中:

 =SumAcross(ser_ua,ROW())