换一种算法,用位置关系来填充颜色,如图:

代码如下:
Sub Test_1016()
On Error Resume Next
Dim arr, arr1, brr(), i&, n&, t&, r&
r = Cells(Rows.Count, 1).End(xlUp).Row
arr = Range("a1:a" & r)
ReDim arr1(1 To r + 1)
For i = 2 To r + 1
arr1(i) = arr(i - 1, 1) Mod 2
Next
'辅助列写入数组
For i = 2 To UBound(arr1)
If arr1(i - 1) <> arr1(i) Then
t = t + 1
ReDim Preserve brr(1 To 2, 1 To t)
Do
n = n + 1
Loop Until arr1(i - 1 + n) <> arr1(i + n) _
Or i + n = UBound(arr1) + 1
brr(1, t) = i - 1
brr(2, t) = n
End If
n = 0
Next
'寻找位置关系,存入数组
For i = 1 To t
If brr(2, i) >= 3 Then
Cells(brr(1, i), 1).Resize(brr(2, i)) _
.Interior.Color = vbYellow
End If
Next
'按照位置关系填充颜色
End Sub