我有一个基于在特定列范围内找到的单元格值突出显示每行的子,然后它使用下面的代码按特定颜色顺序按其单元格颜色对每行进行排序。子的颜色部分是使用FindAllOccurrences函数完成的,如果在此问题上找到公式Sorting and color-coding based on variables。我遇到的问题是使用排序功能。目前的形式,它的工作原理,但不是绝对的。我的意思是,最后一个颜色是红色,仅用于突出显示我的工作表上已停用的项目,排序函数应该对最后一个进行排序,如果它存在,它将执行排序,如果它不存在,它似乎覆盖无论是否停用,我的纸张上的最后一种颜色都会变成红色。我通过改变不同的变量来测试它,并得到不同的结果。按行颜色排序不一致
它可能是我没有看到的东西,但唯一似乎适合它为什么不一致的是sort函数不包含if命令。代码中没有任何内容允许它跳过,如果没有找到颜色。我认为,因为它是一种排序功能,它不能排序不存在的颜色,所以它会自动跳到找到的下一个颜色,但也许我不正确?有什么建议么?
Set WS = ThisWorkbook.Sheets(1)
Set LastRow = WS.Range("FU3:FU5002")
With WS.Sort
.SortFields.Clear
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(204, 255, 255)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(102, 0, 102)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(204, 255, 204)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(128, 128, 0)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(150, 150, 150)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 255, 204)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(204, 204, 255)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(0, 128, 128)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(102, 102, 153)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(192, 192, 192)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(128, 128, 128)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(0, 255, 0)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(0, 255, 255)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(128, 0, 0)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 255, 153)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(128, 0, 128)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(0, 102, 204)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(153, 204, 255)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 153, 204)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(204, 153, 255)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 0, 255)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 153, 0)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 0, 255)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(153, 51, 102)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(153, 204, 0)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 204, 0)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(0, 204, 255)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(0, 0, 255)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 102, 0)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(51, 153, 102)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(51, 51, 153)
.SortFields.Add(LastRow, xlSortOnCellColor, xlAscending, , xlSortNormal). _
SortOnValue.Color = RGB(255, 0, 0)
.SetRange DataSheet
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
这是一个有趣的想法,我不知道这是可能的。你能回答更多细节吗?用这种方法你可能想要指定一个优先顺序吗?这不是绝对必要的,但如果可能的话,将是理想的。 – proxy156
我认为它可能会太复杂,试图检索RGB - 对不起。删除了我的评论。 – Raystafarian