忽略 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
我知道这里有一个类似的答案: 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