- 帖子
- 2848
- 主題
- 10
- 精華
- 0
- 積分
- 2903
- 點名
- 0
- 作業系統
- 〔略〕
- 軟體版本
- 〔略〕
- 閱讀權限
- 100
- 性別
- 男
- 來自
- 〔略〕
- 註冊時間
- 2013-5-13
- 最後登錄
- 2026-7-25
|
上一個是"逐行"填色, 較慢//
這個是"分區"填色, 當資料較多時, 理論上會較快!!!
Sub TEST_A2()
Dim Arr, i&, R&, N&, S$, T$, x%, xA As Range, U(1 To 4) As Range
Cr = Array(0, 44, 37, 39, 43)
With Range([f2], [a65536].End(3)(2))
.Interior.ColorIndex = xlNone
Arr = .Value
End With
For i = 1 To UBound(Arr) - 1
S = Arr(i, 4)
If S <> T Then T = S: R = i + 1: N = 0
N = N + 1
If S <> Arr(i + 1, 4) Then
x = x Mod 4 + 1: Set xA = Cells(R, "c").Resize(N, 2)
If U(x) Is Nothing Then Set U(x) = xA Else Set U(x) = Union(U(x), xA)
If U(x).Count > 100 Then U(x).Interior.ColorIndex = Cr(x): Set U(x) = Nothing
End If
Next i
For x = 1 To 4
If Not U(x) Is Nothing Then U(x).Interior.ColorIndex = Cr(x)
Next x
End Sub |
|