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