Закодируйте сортировку Excel VBA с настраиваемым порядком и значением, содержащим запятые

В VBA Excel позволяет сортировать значения с помощью параметра CustomOrder, чтобы выбрать порядок элементов последовательности. К сожалению, последовательность элементов разделена запятыми, и один из элементов сортировки содержит запятые. Например, я хочу отсортировать данные в первом столбце по категориям во втором столбце. Воздух, Киберпространство Data2 Киберпространство Data3 Data4 Воздух, Земля или Море Data5 Aerospace Data6 Воздух, Земля или Море Киберпространство Data7

Если вы записываете макрос 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

Таким образом, пользовательский порядок сортировки должен быть «Киберпространство», затем «Воздух, Земля или Море», затем «Аэрокосмическая промышленность». Однако вторая категория рассматривается как три категории из-за запятых. Строки с «Воздух, Земля или Море» сортируются вниз, потому что Excel не находит для них пользовательского соответствия сортировки. Есть ли способ заставить CustomOrder работать с категорией, содержащей встроенные запятые?

Я попытался заключить категорию в двойные кавычки и попытался заменить запятые-разделители на точки с запятой (в надежде, что Excel примет точку с запятой вместо запятой. ). Ни то, ни другое не помогло.

10
задан Dean Hill 24 May 2011 в 16:18
поделиться