Vba 如何计算excel中所有工作表中特定颜色的单元格数

Vba 如何计算excel中所有工作表中特定颜色的单元格数,vba,excel,Vba,Excel,有没有办法计算整个工作簿中彩色单元格的数量?例如,我试图计算工作簿中所有绿色单元格的数量,但由于工作簿中有太多选项卡,我必须在每个选项卡中进行排序,然后在最后将它们相加。这真是浪费时间,因为我有很多工作簿,每个都有20多个标签。请帮忙D谢谢 这里有一篇来自微软的文章: 它详细说明了一步一步的操作说明,与您正在尝试的操作非常相似 所需的VBA功能如下所示: Function CountCcolor(range_data As range, criteria As range) As Long

有没有办法计算整个工作簿中彩色单元格的数量?例如,我试图计算工作簿中所有绿色单元格的数量,但由于工作簿中有太多选项卡,我必须在每个选项卡中进行排序,然后在最后将它们相加。这真是浪费时间,因为我有很多工作簿,每个都有20多个标签。请帮忙D谢谢

这里有一篇来自微软的文章:

它详细说明了一步一步的操作说明,与您正在尝试的操作非常相似

所需的VBA功能如下所示:

Function CountCcolor(range_data As range, criteria As range) As Long
    Dim datax As range
    Dim xcolor As Long
xcolor = criteria.Interior.ColorIndex
For Each datax In range_data
    If datax.Interior.ColorIndex = xcolor Then
        CountCcolor = CountCcolor + 1
    End If
Next datax
End Function

此代码对所有工作表中的每种颜色进行单元格计数,然后创建新工作簿并用颜色和计数填充:

Sub test()
    Dim dic As Object: Set dic = CreateObject("Scripting.Dictionary")
    dic.comparemode = vbTextCompare
    Dim cl As Range, i&, ws As Worksheet, k      
    For Each ws In ThisWorkbook.Worksheets
        For Each cl In ws.UsedRange
            If Not dic.exists(cl.Interior.Color) Then
                dic.Add cl.Interior.Color, 0
            Else
                dic(cl.Interior.Color) = CLng(dic(cl.Interior.Color)) + 1
            End If
        Next cl
    Next ws
    Workbooks.Add: i = 1
    For Each k In dic
        Cells(i, "A").Interior.Color = k
        Cells(i, "A").Value2 = "Interior.Color = " & k
        Cells(i, "B").Value2 = dic(k)
        i = i + 1
    Next k
End Sub
输出:


您必须创建一个自定义项才能执行此操作。