我正在对电子表格的两个部分进行排序,顶部工作正常,而下半部分却有问题,因为该行根据数据而变化。这就是我所拥有的,问题是它最终对整个(两个)部分(由换行符分隔)进行排序。在正确方向上的任何帮助将不胜感激。
编辑说明: 我所拥有的是一个包含两个部分的电子表格。顶部可以是可变/动态范围。 IE可能是30行或300行。电子表格的后半部分由行插入(单元格的空白行)分隔,我需要进行排序并遇到问题。问题在于如何识别从A(可变/动态)行到CU的单元格。希望这有助于更好地解释事情,但是如果需要更多说明,请告诉我。
Sub test()
Dim lrow As Long
lrow = Selection.End(xlDown).Row
Selection.End(xlDown).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Inseason Columns").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Inseason Columns").Sort.SortFields.Add Key:=Range( _
"E" & lrow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Inseason Columns").Sort
.SetRange Range("A:CU", Selection.End(xlDown))
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
答案 0 :(得分:2)
如果“换行符”是空白行,请将其隐藏,然后可以在Range.Rare.Areas of Range.SpecialCells(xlCellTypeVisible)中循环浏览。
Option Explicit
Sub sortAreas()
Dim a As Long
With Worksheets("sheet10")
.range("1:2").entirerow.hidden = true
.Columns("E").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
With Intersect(.Range("A:CU"), .UsedRange).SpecialCells(xlCellTypeVisible)
For a = 1 To .Areas.Count
With .Areas(a)
.Cells.Sort Key1:=.Columns(5), Order1:=xlAscending, DataOption1:=xlSortTextAsNumbers, _
Orientation:=xlTopToBottom, Header:=xlNo
End With
Next a
End With
.Columns("E").SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = False
.range("1:2").entirerow.hidden = false
End With
End Sub