忽略 SUM(x:y) 中隐藏的列,就像 AGGREGATE 可以忽略隐藏的行

Ignore hidden columns in SUM(x:y), like AGGREGATE can ignore hidden rows

我知道这里有一个类似的答案: Ignoring a hidden column in an excel sum formula

...这很好,但对我来说并不理想。我真的只需要一个可以动态应用的简单函数。

有没有办法以类似于 AGGREGATE 函数的方式执行此操作? AGGREGATE 几乎对我有用,只是它恼人地忽略了隐藏的行而不是列!

例如:

我有一个包含 A5:A10 值的工作表。

如果我将 A11 的公式设置为 =SUM(A5:A10) 我会得到预期的金额,无论列是否隐藏。

如果我使用 =AGGREGATE(9,5,A5:A10) 结果是一样的,尽管如果我跨行而不是跨列这样做,隐藏的行将在计算中被忽略。

是否有一种简单的方法可以做到这一点,或者是检查每列宽度的唯一方法,如所提供的答案所示?

您可以在 header 中添加一行 above/below 并仅用 0 或 1 填充,然后使用数组公式对每一行进行水平求和,例如

    A           B   C   D   E   F
1   Selector    1   1   0   0   
2   Data        1   2   3   4   3

F2中的公式:{=SUM(B2:E2*B:E)}(不带大括号输入,按Ctrl+Shift+输入保存)。然后您可以像往常一样将公式复制到您的列表中。

您可以遍历列并只在未隐藏的列中添加值。

看起来像这样:

Dim yourRow As Integer
Dim rowSum As Integer
yourRow = X
rowSum = 0

For i = 1 to NumberOfColumns

If Sheets(1).Columns(i).Hidden = False Then

rowSum = rowSum + Sheets(1).Cells(yourRow, i)

Next i