Excel 是否仅对一行(非列)中的可见单元格求和?

Excel 是否仅对一行(非列)中的可见单元格求和?,excel,excel-formula,aggregate,subtotal,Excel,Excel Formula,Aggregate,Subtotal,我有一行,我只想对可见的单元格求和,我知道如果它是一列,我可以使用小计(109,范围),但这一行似乎不适用于一行中的单元格。有人知道如何对一行中的可见单元格求和吗 您可以检查单元格的宽度 =IF(CELL("width",A1)=0,"hidden","open") 然后,您可以根据需要使用IF和CELL对单元格求和 =IF(CELL("width",A1)=0,0,A1) 详情如下: 您可以检查单元格的宽度 =IF(CELL("width",A1)=0,"hidden","open")

我有一行,我只想对可见的单元格求和,我知道如果它是一列,我可以使用小计(109,范围),但这一行似乎不适用于一行中的单元格。有人知道如何对一行中的可见单元格求和吗


您可以检查单元格的宽度

=IF(CELL("width",A1)=0,"hidden","open")
然后,您可以根据需要使用IF和CELL对单元格求和

=IF(CELL("width",A1)=0,0,A1)
详情如下:
您可以检查单元格的宽度

=IF(CELL("width",A1)=0,"hidden","open")
然后,您可以根据需要使用IF和CELL对单元格求和

=IF(CELL("width",A1)=0,0,A1)
详情如下:

如果VBA解决方案正常,这将起作用:

Function sumVisible(rng As Range) As Double
Dim cel As Range
For Each cel In rng
    If cel.EntireColumn.Hidden = False Then
        sumVisible = sumVisible + cel.Value
    End If
Next cel
End Function
非常简单-只需检查范围内的单元格是否有隐藏列,如果可见,则求和


=sumVisible(D2:M2)
是您使用它的方式。

如果VBA解决方案没有问题,这将起作用:

Function sumVisible(rng As Range) As Double
Dim cel As Range
For Each cel In rng
    If cel.EntireColumn.Hidden = False Then
        sumVisible = sumVisible + cel.Value
    End If
Next cel
End Function
非常简单-只需检查范围内的单元格是否有隐藏列,如果可见,则求和


=sumVisible(D2:M2)
是您使用它的方式。

您可以单独使用一个工作表公式来实现这一点,前提是未隐藏的任何列的宽度都不小于或等于0.5(实际上,宽度很窄,在任何情况下都会被隐藏)

假设范围为
A1:E1

=SUMPRODUCT(0+(单元格(“宽度”),偏移量(A1,N(索引(列(A1:E1))-MIN(列(A1:E1)),))>0,A1:E1)

不幸的是,在对范围内的列进行隐藏/取消隐藏更改时,此公式不会自动更新。因此,每次你在这方面做出改变时,都有必要“重新承诺”;一种方法是进入公式进行编辑,然后按ENTER键重新提交

也许是有趣的


关于

您可以单独使用一个工作表公式来实现这一点,前提是未隐藏的列的宽度都不小于或等于0.5(实际上,宽度很窄,在任何情况下都几乎隐藏)

假设范围为
A1:E1

=SUMPRODUCT(0+(单元格(“宽度”),偏移量(A1,N(索引(列(A1:E1))-MIN(列(A1:E1)),))>0,A1:E1)

不幸的是,在对范围内的列进行隐藏/取消隐藏更改时,此公式不会自动更新。因此,每次你在这方面做出改变时,都有必要“重新承诺”;一种方法是进入公式进行编辑,然后按ENTER键重新提交

也许是有趣的


关于

使用此方法,OP必须创建另一组数据,然后求和,对吗?当然,有没有办法将其放入数组公式中?@BruceWayne no
CELL
在数组中不起作用。一次只能使用一个单元格。所以要使用它需要一个helper行。谢谢你,我确实找到了一些方法,但是我尝试了你的公式。它可以工作,但问题是,它适合一次求和,但是如果我更改了单元格的宽度,我需要手动刷新它。我想做的是,我有一个VBA来自动隐藏我不想要的列,我希望当我改变隐藏的列时,总和可以改变。@ ScottCraner实际上我们可以使用数组,有一点强制力。应该向OP指出,这个解决方案不能保证只考虑隐藏列。在此构造中,宽度小于0.5的任何列也将被视为等于0。使用此方法,OP必须创建另一组数据,然后将其相加,对吗?当然,有没有办法将其放入数组公式中?@BruceWayne no
CELL
在数组中不起作用。一次只能使用一个单元格。所以要使用它需要一个helper行。谢谢你,我确实找到了一些方法,但是我尝试了你的公式。它可以工作,但问题是,它适合一次求和,但是如果我更改了单元格的宽度,我需要手动刷新它。我想做的是,我有一个VBA来自动隐藏我不想要的列,我希望当我改变隐藏的列时,总和可以改变。@ ScottCraner实际上我们可以使用数组,有一点强制力。应该向OP指出,这个解决方案不能保证只考虑隐藏列。在此构造中,宽度小于0.5的任何列也将被视为等于0。我确实认为Excel人员会包含一个方法(
SUBTOTAL()
)来对隐藏行求和,而不是隐藏列求和,这有点奇怪。我想知道为什么。是的,删除重复项也有同样的问题。我确实认为Excel人员会包括一个对隐藏行求和的方法(
SUBTOTAL()
),而不是一个对隐藏列求和的方法,这有点奇怪。我想知道为什么。是的,删除重复项也有同样的问题,这是一个需要大量工作才能解决的问题。但我向你的专业知识低头。:-)我从来没有说过这是一个简单的解决方案!这是一项非常艰巨的工作。但我向你的专业知识低头。:-)我从来没有说过这是一个简单的解决方案!