通过并集范围循环

问题描述 投票:-1回答:1

如何循环此代码,以使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行,依此类推。子标题根据项目而变化。我的总体目标是对每个范围进行排序,而不对子标题进行排序。子标题为灰色,所有数据为白色。

Example Data

excel vba
1个回答
0
投票

如果像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

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.