按 1 列的值和另一列的颜色对动态范围的数据进行排序
Sorting a dynamic range of data by value of 1 column and color of another column
我正在研究 vba 按第 2 列的单元格颜色和第 1 列的值对动态数据范围进行排序。代码可以正常按值排序,但当出现语法错误时我还添加了对单元格颜色进行排序的代码。我在互联网上搜索了几个小时类似的情况,但没有成功。 (也许我不知道正确的关键词)
以下是我正在处理的代码。请给我一些启发,谢谢!
Dim oneRange As Range
Dim aCell As Range
Dim bCell As Range
Set oneRange = Selection
Set aCell = ActiveCell
Set bCell = ActiveCell.Offset(0, 1)
oneRange.Sort key1:=aCell, Order1:=xlAscending, Header:=xlYes
oneRange.Sort Key2:=bCell, _
SortOn:=xlSortOnCellColor, _
Order:=xlAscending, _
DataOption:=xlSortNormal).SortOnValue.Color = _
RGB(198, 239, 206)
End Sub
您正在尝试混合使用范围排序和工作表排序。
这一行还有你录制宏时的右括号。宏使用工作表 SortFields.Add 方法。
DataOption:=xlSortNormal).SortOnValue.Color = _
无法根据您的问题编写准确的宏。尽量避免使用 Selection、Activate、ActiveCell 等。
这应该让你开始:
Sub SortData()
Dim aColumn As Range, bColumn As Range, Target As Range
With ActiveWorkbook.Worksheets("Sheet1")
Set Target = .Range("A1").CurrentRegion
Set aColumn = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
Set bColumn = .Range("B2", .Range("B" & .Rows.Count).End(xlUp))
With .Sort
.SortFields.Clear
.SortFields.Add(bColumn, xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(198, 239, 206)
.SortFields.Add Key:=aColumn, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Selection
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub
我正在研究 vba 按第 2 列的单元格颜色和第 1 列的值对动态数据范围进行排序。代码可以正常按值排序,但当出现语法错误时我还添加了对单元格颜色进行排序的代码。我在互联网上搜索了几个小时类似的情况,但没有成功。 (也许我不知道正确的关键词)
以下是我正在处理的代码。请给我一些启发,谢谢!
Dim oneRange As Range
Dim aCell As Range
Dim bCell As Range
Set oneRange = Selection
Set aCell = ActiveCell
Set bCell = ActiveCell.Offset(0, 1)
oneRange.Sort key1:=aCell, Order1:=xlAscending, Header:=xlYes
oneRange.Sort Key2:=bCell, _
SortOn:=xlSortOnCellColor, _
Order:=xlAscending, _
DataOption:=xlSortNormal).SortOnValue.Color = _
RGB(198, 239, 206)
End Sub
您正在尝试混合使用范围排序和工作表排序。
这一行还有你录制宏时的右括号。宏使用工作表 SortFields.Add 方法。
DataOption:=xlSortNormal).SortOnValue.Color = _
无法根据您的问题编写准确的宏。尽量避免使用 Selection、Activate、ActiveCell 等。
这应该让你开始:
Sub SortData()
Dim aColumn As Range, bColumn As Range, Target As Range
With ActiveWorkbook.Worksheets("Sheet1")
Set Target = .Range("A1").CurrentRegion
Set aColumn = .Range("A2", .Range("A" & .Rows.Count).End(xlUp))
Set bColumn = .Range("B2", .Range("B" & .Rows.Count).End(xlUp))
With .Sort
.SortFields.Clear
.SortFields.Add(bColumn, xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(198, 239, 206)
.SortFields.Add Key:=aColumn, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange Selection
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub