2015-03-03 106 views
0

我知道有一个类似的答案在这里: Ignoring a hidden column in an excel sum formula忽略隐藏列SUM(X:Y),如骨料可以忽略隐藏的行

...这是一个很好的,但它是不理想为了我。我真的只需要一个可以动态应用的简单函数。

有没有办法以类似于AGGREGATE函数的方式来做到这一点? AGGREGATE几乎适用于我,除了恼人地忽略隐藏的行而不是列!

例如:

我有在A5:A10值的工作表。

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

如果我使用=AGGREGATE(9,5,A5:A10),结果是相同的,但是如果我在行而不是列上执行此操作,隐藏行将在计算中被忽略。

是否有一个简单的方法来做到这一点,或者是检查每列的宽度的唯一方法,就像在提供的答案中一样?

回答

0

您可以在标题的上方/下方添加一行,然后用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$1:E$1)}(没有大括号中输入,按Ctrl键++输入保存)。然后,您可以像往常一样将公式复制到列表中。

+0

是否列的工作吗? – CompanyDroneFromSector7G 2015-03-03 11:45:04

+0

刚刚尝试过。隐藏的列不会被忽略:( – CompanyDroneFromSector7G 2015-03-03 11:47:16

+0

糟糕...对不起太快了 – MikeD 2015-03-03 11:47:46

0

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

它会是这样的:

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