以下是一个示例的VBA脚本,用于将带有颜色填充的单元格按照颜色移至顶部进行排序:
Sub sort_by_color()
Dim rng As Range Dim i As Long, j As Long, n As Long Dim cell As Range Dim tmp_array() As Variant
Set rng = Range("A1:D10") n = rng.Cells.Count
ReDim tmp_array(1 To n, 1 To 5)
For Each cell In rng
i = i + 1
j = j Mod 5
If j = 0 Then j = 5
tmp_array(i, j) = cell.Value
tmp_array(i, 5) = cell.Interior.ColorIndex
Next cell
Range("A1:D10").ClearContents
For i = 1 To n For j = i To n If tmp_array(i, 5) > tmp_array(j, 5) Then For k = 1 To 5 Dim tmp As Variant tmp = tmp_array(i, k) tmp_array(i, k) = tmp_array(j, k) tmp_array(j, k) = tmp Next k End If Next j Next i
Range("A1").Resize(n, 5) = tmp_array
End Sub
要使用此代码,只需将其复制并粘贴到Excel的Visual Basic Editor(VBE)中,然后选择需要排序的单元格并按下F5。此代码将把包含颜色填充的单元格按照颜色的顺序移至顶部,以实现颜色的排序效果。