gpt4 book ai didi

vba - 自定义排序与自定义排序

转载 作者:行者123 更新时间:2023-12-04 22:02:02 25 4
gpt4 key购买 nike

我想根据列中的值对行进行排序 G .有 3 个可能的值:绿色、红色和黄色。我希望行在顶部以绿色排序,然后是黄色,然后是红色。

我尝试的所有结果都是按字母顺序排列的:绿色,红色,然后是黄色。列 R 上有二次排序,但这工作正常。

我的最新代码如下。 rr是最后一行的编号。我试过有没有Order1:=xlAscending .

sCustomList = "绿色""黄色""红色"

Application.AddCustomList ListArray:=sCustomList
Range("A3:T" & rr).Sort Key1:=Range("G3:G" & rr), Order1:=xlAscending, _
OrderCustom:=Application.CustomListCount + 1, MatchCase:=False, _
DataOption1:=xlSortNormal, Key2:=Range("R3:R" & rr), Order2:=xlAscending

最佳答案

查看您的代码,sCustomList看起来像一个字符串类型变量,而不是一个变体数组。我在自定义排序列表方面的成功在于每次都创建一个新列表并使用最高索引号来引用它。

Sub custom_sort()
Dim vCustom_Sort As Variant, rr As Long

vCustom_Sort = Array("green", "yellow", "red", Chr(42))
Application.AddCustomList ListArray:=vCustom_Sort

With Worksheets("Sheet2") '<~~ set this properly!
.Sort.SortFields.Clear
rr = .Cells(Rows.Count, "G").End(xlUp).Row
With .Range("A3:T" & rr)
'use this to presort one or more secondary fields before the primary custom sort
'.Cells.Sort Key1:=.Columns(18), Order1:=xlAscending, _
Key2:=.Columns(1), Order2:=xlDescending, _
Orientation:=xlTopToBottom, Header:=xlYes
.Cells.Sort Key1:=.Columns(7), Order1:=xlAscending, _
Orientation:=xlTopToBottom, Header:=xlYes, MatchCase:=False, _
OrderCustom:=Application.CustomListCount + 1

End With
.Sort.SortFields.Clear
End With

End Sub
.Cells.Sort.SortFields.Add 之间有一个转折点和 .Cells.Sort这通常会产生一些困惑。 .SortFields.Add method使用 CustomOrder:=参数和 Range.Sort method使用 OrderCustom:=范围。两者绝对不一样,但经常交替使用,结果是灾难性的。

关于vba - 自定义排序与自定义排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32681952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com