思路:
1、先对表进行排序
2、再对不同行填充不同颜色
最终效果图
代码:
Sub 不同行填充颜色()
Dim rng As Range
Dim ys As Byte
Dim r As Integer, c As Integer
With ThisWorkbook.Sheets("sheet1") 'sheet1可修改,你想在那个表进行颜色填充,就改成对应表的名
r = .Cells(.Rows.Count, 1).End(xlUp).Row '获取最大行号
c = .Cells(1, .Columns.Count).End(xlToLeft).Column '获取最大列号
'先根据 A列排序。Key1:=.Range("A1")中字母 A 可修改,比如想根据 D 列排序,可写Key1:=.Range("D1")
.Range("A1").CurrentRegion.Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlYes
For Each rng In .Range("A2:A" & r) '可修改颜色填充依据列。如Range("A2:A" & r)中 A 可替换成Range("F2:F" & r)
If rng.Value = rng.Offset(-1, 0).Value Then
rng.Resize(1, c).Interior.ColorIndex = rng.Offset(-1, 0).Interior.ColorIndex
Else
ys = Application.WorksheetFunction.RandBetween(33, 39) '随机生成颜色数字,这里选择了颜色较浅的数字区间
If ys = rng.Offset(1, 0).Interior.ColorIndex Then
ys = ys + 1
End If
rng.Resize(1, c).Interior.ColorIndex = ys
End If
Next rng
End With
End Sub
有办公自动化需求的朋友可以在评论区留言,大家一起来研究研究。嘿嘿