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

有没有一种方法可以计算整个工作簿中的彩色单元格的数量? 例如,我试图计算工作簿中的所有绿色单元格,但由于工作簿中有许多选项卡,所以必须在每个选项卡中进行sorting,然后在最后添加它们。 由于我有许多工作簿,每个工作表有20多个标签,这实在是浪费时间。 请帮忙! :D谢谢!

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

它详细说明了与你正在做的事情非常类似的一步一步的指示。

所需的VBAfunction如下:

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 

此代码为所有工作表中的每种颜色计算单元格数量,然后创build新的工作簿并填充颜色和计数:

 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 

输出:

在这里输入图像说明

看看这篇文章从微软: https : //support.microsoft.com/en-us/kb/142122

如果你不熟悉VBA,这将是一个有点挑战性。 但是你可以使用这篇文章,结合一个简单的循环来find所有的单元格。

如果这是你需要经常做的事,或者一直在做,我会build议投入时间从颜色改变为实际值。 这将更容易sorting,pipe理和报告。 然后你可以使用条件格式来获取你的颜色。