VBA - 计算隐藏的且具有特定值的单元格

VBA - Count cells that are hidden and have specific value

我想弄清楚如何编写 VBA 代码来计算我的范围内有多少单元格被隐藏并具有特定值。

我试过类似的方法,但没有用:

Sub Count_hidden_ABC()
Dim s As Long
Dim Rg As Range
Set Rg = Worksheets("Sheet1").Range("G8:G255")
s = Application.WorksheetFunction.CountIfs(Rg, "ABC", Rg, SpecialValues(12))

Sub Count_hidden_ABC()
Dim s As Long
Dim Rg As Range
Set Rg = Worksheets("Sheet1").Range("G8:G255")
s = Rg.SpecialCells(12).Application.WorksheetFunction.CountIf(Rg, "ABC")

有人知道怎么做吗?

您可以使用此代码作为基础,它计算指定范围内值为 "ABC" 的隐藏单元格:

Sub CountHiddenCellsInRange()
    Dim rng As Range, hiddenCells As Long, c As Range
    hiddenCells = 0
    Set rng = Range("A1:B5")
    For Each c In rng
        If (Rows(c.Row).Hidden Or Columns(c.Column).Hidden) And c.Value = "ABC" Then hiddenCells = hiddenCells + 1
    Next
    MsgBox hiddenCells
End Sub

特殊细胞壮举。地区

  • 当您选择 SpecialCells(12) 或 SpecialCells(xlCellTypeVisible) 你选择的是可见的 细胞不是你需要的隐形细胞。
  • 不知道到底发生了什么,但好像是 CountIf 不适用于非连续范围。
  • 所以你可以循环遍历非连续范围内的范围使用 地区.

代码

Sub Count_hidden_ABC()

    Dim s As Long
    Dim Rg As Range
    Dim rng As Range
    Set Rg = Worksheets("Sheet1").Range("G8:G255")

    For Each rng In Rg.SpecialCells(12).Areas
        s = s + WorksheetFunction.CountIf(rng, "ABC")
    Next

    s = WorksheetFunction.CountIf(Rg, "ABC") - s
    'Debug.Print s

End Sub