【发布时间】:2020-05-03 11:26:23
【问题描述】:
我想知道是否可以创建一个宏来对我的工作表进行排序,其范围不断变化?最后一行不是不断变化,而是顶部行数会发生变化。 是否可以让我的 .setrange 成为一个变量,该变量会根据参数使用新范围进行更新? 例如,我将当前代码设置为从 A5 开始的范围,但如果第 6 - 10 行的内部颜色为绿色,我希望它保留在顶部,并且仅从 A11 开始排序。
activesheet.Sort.SortFields.Clear
activesheet.Sort.SortFields.Add Key:=Range("M6"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With activesheet.Sort
.SetRange Range("A5:O150") ' I want this range to change constantly without me manually changing, for example it would be from ("A10:0150") now
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
【问题讨论】:
-
当然。问题的逻辑是什么?细胞是否是绿色的?
-
除了
A5之外,范围内是否还有其他非绿色单元格被排除在排序之外? -
@BigBen,如果单元格为白色(颜色索引 = -4142),则逻辑适用于列 E,那么这应该是要排序的范围的一部分。如果它们不是白色的,则应排除所有其他行。可能会有红色、绿色、黄色等的单元格。
-
@RonRosenfeld ^
-
要排除的行是否都是连续的,从第一行数据开始?