创建一个类似于小计的函数,忽略隐藏的列

问题描述 投票:0回答:3

我正在尝试找到小计或聚合的替代品,它将对一个范围内的所有单元格求和,但那些列被隐藏的单元格除外。由于没有内置函数,我正在尝试创建自己的函数,但遇到了很多困难。我尝试了以下 VBA 代码但无济于事:


Function VISSUM(myRange As range) As Double
On Error Resume Next

Dim i As Variant
Dim mySum As Integer

For Each i In myRange
    If myRange.SpecialCells(xlCellTypeVisible) = True Then
        mySum = mySum + myRange
    End If
Next i

VISSUM = mySum

End Function

这也不管用:


Function mySum(myRange As range) As Double
On Error Resume Next

mySum = Application.WorksheetFunction.Sum(myRange.SpecialCells(xlCellTypeVisible) = True)

End Function

我也搞砸了使用

myRange.EntireColumn.Hidden = False
但没有成功。任何帮助将不胜感激。

excel vba function hidden subtotal
3个回答
0
投票

你总是可以尝试:

i.entirecolumn.hidden = False

myrange 将检查隐藏和未隐藏的所有内容,因为 I 应该是您处理隐藏或不隐藏的个人范围。


0
投票

总结列

快速修复

Function VISSUM(ByVal myRange As Range) As Double

    Dim crg As Range, mySum As Double

    For Each crg In myRange.Columns
        If crg.Hidden = False Then
            mySum = mySum + Application.Sum(crg)
        End If
    Next crg

    VISSUM = mySum

End Function

0
投票

谢谢 Jonathan,它奏效了,我不知道我是怎么错过这个明显错误的。这就是我最终写的。

函数 VISSUM(myRange As range) As Double
出错继续下一步

变暗我作为变体
Dim mySum 为 Double

对于每个我在 myRange
    如果 i.EntireColumn.Hidden = False 那么
        我的总和 = 我的总和 + 我
    万一
接下来我

VISSUM = mySum

结束功能
© www.soinside.com 2019 - 2024. All rights reserved.