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

时间:2016-01-31 05:40:29

标签: excel vba excel-vba

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

3 个答案:

答案 0 :(得分:2)

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

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

输出:

enter image description here

答案 1 :(得分:1)

微软有一篇文章,在这里:https://support.microsoft.com/en-us/kb/2815384

详细说明了与您尝试做的非常类似的一步一步的说明。

所需的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

答案 2 :(得分:0)

请查看Microsoft的这篇文章:https://support.microsoft.com/en-us/kb/142122

如果您不熟悉VBA,那将会有点挑战性。但是,您可以结合一个简单的循环使用本文来查找所有单元格。

如果这是你需要经常或者一直在做的事情,我建议花时间从颜色变为实际值。排序,管理和报告将更容易。然后你可以使用条件格式来恢复颜色。