有没有办法计算整个工作簿中的彩色单元格数?例如,我正在尝试计算工作簿中所有绿色单元格的数量,但由于工作簿中有很多选项卡,我必须在每个选项卡中对其进行排序,然后在最后添加它们。这真的是浪费时间,因为我有很多工作簿,每个工作簿超过20个标签。请帮忙! :D谢谢!
答案 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
输出:
答案 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,那将会有点挑战性。但是,您可以结合一个简单的循环使用本文来查找所有单元格。
如果这是你需要经常或者一直在做的事情,我建议花时间从颜色变为实际值。排序,管理和报告将更容易。然后你可以使用条件格式来恢复颜色。