Сортировать столбец B, сохраняя порядок столбца A.

Сортировать столбец B, сохраняя порядок столбца A.

В Excel у меня есть 2 столбца. Я хочу отсортировать второй в алфавитном порядке, сохранив (пользовательский) порядок в первом (представьте std::stable_sort, где равенство основано только на первом столбце). Пример:

dsf   k
www   d
www   a
azd   q
azd   e
azd   b

должно стать

dsf   k
www   a
www   d
azd   b
azd   e
azd   q

Мастер сортировки, похоже, не имеет опции "сохранить текущий порядок". Я мог бы определить пользовательский порядок, но у меня более тысячи различных элементов; это было бы настоящей головной болью, и этот пользовательский порядок может измениться в любое время.

решение1

Я предполагаю, что ваши данные начинаются в строке 2, и этот столбец Cдоступен для использования в качестве «вспомогательного столбца». Поместите

=IF(A1=A2, C1, C1+1)

в ячейку C2. (Если столбец Cнедоступен, используйте тот, который доступен. Если ваши данные начинаются в строке 1, либо вставьте пустую строку, либо (все равно) поместите вышеперечисленное в ячейку C2, но поместите 1в ячейку C1.) Перетащите/заполните вниз. CТеперь этот (столбец ) «документирует» ваш пользовательский порядок; например, C2= 1, C3= C4= 2 и C5= C6= C7= 3. Теперь отсортируйте по столбцу Cи столбцу B.

решение2

Быстро и грязно:-

  1. Скопируйте содержимое столбца A в Блокнот, затем скопируйте его в буфер обмена.
  2. Выберите оба столбца.
  3. Выберите функцию сортировки и отсортируйте столбец A, используя порядок «пользовательского списка».
  4. Введите данные из буфера обмена в пользовательский список.
  5. Добавьте уровень к функции сортировки, а затем отсортируйте по столбцу B, «от меньшего к большему».

решение3

Я думаю, что лучше всего использовать индивидуальные заказы. Если не нужно обновлять слишком часто, можно сделать это FILE>OPTIONS>ADVANCED>EDIT CUSTOM LISTS...и просто импортировать весь ассортимент. Затем использовать это при сортировке.

Решение VBA будет выглядеть примерно так:

Подсортировка()
Dim iCustListNum как целое число

iCustListNum = Application.CustomListCount + 1
Приложение.ДобавитьПользовательскийСписокМассивСписка:=Диапазон("A2:A100")

При ошибке GoTo err:

«Сортируйте свой список»
Диапазон("A1:B100").sort Key1:=Range("A1"), Order1:=xlAscending, OrderCustom:=iCustListNum, _
    Ключ2:=Диапазон("B1"), Порядок2:=xlПо возрастанию, Заголовок:=xlДа, _
    MatchCase:=False, Orientation:=xlTopToBottom

«Убрать»
ошибка:
Application.DeleteCustomList ListNum:=iCustListNum

Конец субтитра

Связанный контент