在VBA中,Excel允许使用CustomOrder参数对值进行排序,以选择项的排序顺序。不幸的是,项的顺序由逗号分隔,并且我的一个排序项包含逗号。例如,我想按第二列中的类别对第一列中的数据进行排序。“Air,Land,or Sea”类别包含逗号。
Data1 Aerospace
Data2 Cyberspace
Data3 Cyberspace
Data4 Air, Land, or Sea
Data5 Aerospace
Data6 Air, Land, or Sea
Data7 Cyberspace
如果录制VBA宏,则创建的代码如下所示:
MyWorksheet.Sort.SortFields.Add Key:=Range( _
"B:B"), SortOn:=xlSortOnValues, Order:=xlAscending, _
CustomOrder:= "Cyberspace,Air,Land,or Sea,Aerospace", _
DataOption:=xlSortNormal
MyWorksheet.Sort.Apply
因此,自定义排序顺序应该是“Cyberspace”,然后是“Air,Land,or Sea”,然后是“Aerospace”。然而,由于逗号的存在,第二个类别被视为三个类别。具有“Air,Land,or Sea”的行被排序到底部,因为Excel没有找到与它们匹配的自定义排序。是否有方法让CustomOrder处理包含嵌入逗号的类别?
我试着在类别周围加上双引号,并尝试用分号替换分隔符逗号(希望Excel能接受分号而不是逗号)。
3条答案
按热度按时间bfnvny8b1#
好像少了
Apply
,可以添加吗你的定制订单和我的样品一样。
编辑根据OP更新的问题进行更新
将宏编辑为以下内容-使用OrderCustom参数的数组。
3qpi33ja2#
好的……根据更新的描述,为您正在排序的列旁边的列提供一个公式如何?
因此,如果“Air,Land,or Sea”在B1列中,则C1将有:
然后你可以像这样做你的自定义排序:
确保适当调整范围。
igsr9ssn3#
使用额外的引号也应该可以