我有一个电子表格选项卡,其中的活动范围是A4:DD 2500,因此有270,000个单元格。我有一段代码(感谢@EvilBlueMonkey),它根据用户在A列中的下拉选择(见下文),将B列到DD列中的单元格填充为蓝色、灰色或黄色。当用户在其中一个蓝色单元格中输入数据时,它会变成绿色,表示使用条件格式完成。我想实现一个代码,在每次用户执行一个条目后动态运行,该条目计数四种不同的情况-蓝色单元格,绿色单元格,没有文本的黄色单元格和有文本的黄色单元格。我构建了以下代码,它将运行,但每次都会冻结Excel。有没有什么方法可以更有效地遍历27万个单元格?如果没有,那么循环遍历那些只填充了列A的行怎么办?
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Declarations.
Dim CountRange As Range
Dim CountRangeCell As Range
Dim BColorCounter As Long
Dim GColorCounter As Long
Dim YColorCounter As Long
Dim YColorTextCounter As Long
'SETTINGS:
'Set Cells to be counted Range
Set CountRange = Worksheets("ADIS").Range("B3:DD2500")
'Loop through each cell in the range
For Each CountRangeCell In CountRange
'Checking Blue Color
If Cells(CountRangeCell.Row, CountRangeCell.Column).DisplayFormat.Interior.Color = RGB(155, 194, 230) Then
BColorCounter = BColorCounter + 1
Else
'Checking Yellow Color
If Cells(CountRangeCell.Row, CountRangeCell.Column).DisplayFormat.Interior.Color = RGB(255, 255, 0) And CountRangeCell.Text = "" Then
YColorCounter = YColorCounter + 1
Else
'Checking Green Color
If Cells(CountRangeCell.Row, CountRangeCell.Column).DisplayFormat.Interior.Color = RGB(169, 208, 142) Then
GColorCounter = GColorCounter + 1
Else
'Checking Yellow With Text
If Cells(CountRangeCell.Row, CountRangeCell.Column).DisplayFormat.Interior.Color = RGB(255, 255, 0) And CountRangeCell.Value <> "" Then
YColorTextCounter = YColorTextCounter + 1
End If
End If
End If
End If
Next
Range("C2504") = YColorCounter
Range("D2504") = BColorCounter
Range("E2504") = GColorCounter
Range("F2504") = YColorTextCounter
End Sub
谢谢!x1c 0d1x
1条答案
按热度按时间watbbzwu1#
工作表变更:计数突出显示的单元格
A
列中的每个更改上)。如果列A
中的所有单元格都被填充。