如何循环此代码,以使rColored
一次仅等于1个范围。现在它将检查工作表并找到4个范围。我想对每个范围进行排序。
For Each rCell In Range("A5:G" & lastrow)
If rCell.Interior.Color = vbWhite Then
If rColored Is Nothing Then
Set rColored = rCell
Else
Set rColored = Union(rColored, rCell)
End If
End If
Next
我的数据经过布局,因此第5行是一个子标题,第6-36行是适用于第5行子标题的数据。第37行是另一个子标题,其数据位于第38-43行,依此类推。子标题根据项目而变化。我的总体目标是对每个范围进行排序,而不对子标题进行排序。子标题为灰色,所有数据为白色。
如果像SJR所怀疑的那样,B5,B37等单元格为空白,而B列中的其他单元格都不为空白,请尝试以下操作...
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Dim rangeAreas As Areas
Set rangeAreas = Range("B5:B" & lastRow).SpecialCells(xlCellTypeConstants).Areas
Dim rangeArea As Range
For Each rangeArea In rangeAreas
With rangeArea.Offset(, -1).Resize(, 7)
.Sort _
key1:=.Cells(1), _
Order1:=xlAscending, _
Header:=xlNo, _
MatchCase:=False
End With
Next rangeArea
希望这会有所帮助!