Группировать и сортировать строки таблицы

2

У меня есть таблица где столбец A содержит уникальное значение в каждой ячейке. колонка B либо пусто, либо содержит число.

   |    A    | B 
---+---------+---
 1 | Gamma   | 1 
 2 | Echo    | 5 
 3 | Alpha   |   
 4 | Foxtrot | 3 
 5 | Bravo   |   
 6 | Charlie | 1 
 7 | Delta   |   

Я хотел бы отсортировать таблицу так, чтобы строки с непустым значением в B перед столбцами появляются те, у которых в этом столбце есть пробел. Строки с непустыми значениями в B также нужно отсортировать по алфавиту по столбцам A, Порядок сортировки других строк не имеет значения.

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

   |    A    | B 
---+---------+---
 1 | Charlie | 1 
 2 | Echo    | 5 
 3 | Foxtrot | 3 
 4 | Gamma   | 1 
 5 | Alpha   |   
 6 | Bravo   |   
 7 | Delta   |   

На данный момент, пустые ячейки в столбце B полностью пустые, даже не содержащие формулы, которая оценивается как пустая строка. В будущем это, вероятно, изменится. Я не знаю, повлияет ли это на какие-либо ответы.

John Doe
источник
Пока что лучшее, что мне удалось придумать, - это отсортировать по столбцу с номерами (столбец B), скрыть все пустые строки, а затем отсортировать по алфавиту столбец A. Кажется, это единственный вариант, если кто-то не имеет что-то, что работает для них.
John Doe

Ответы:

1

Там является на самом деле без скрытия строк, без фильтрации, не замужем решение. Для этого нужно просто добавить формулу условного форматирования в столбец B:

Worksheet Screenshot showing Conditional Formatting Rules

Выбрать B2:B8, убедившись, что B2 является активной ячейкой, и добавьте новое правило условного форматирования формулы. Измените цвет шрифта правила на любой другой, кроме Automatic и введите следующее в качестве формулы:

=B2=""

Обратите внимание, что хотя отображается строка заголовка, она не обязательна. (См. Примечания внизу мой другой ответ для дальнейших деталей.)


Теперь все, что вам нужно сделать, чтобы получить желаемый результат, это двухуровневая сортировка:

Worksheet Screenshot showing Sort Order

  1. Сортировать по столбцу B на Font Color заказан Automatic On Top
  2. Сортировать по столбцу A на Values заказан A to Z

Тот же эффект может быть достигнут при использовании цвета заливки вместо цвета шрифта для правила условного форматирования и сортировки по Cell Color, (Используя цвет шрифта, проще не делать видимых изменений для данных. Я использовал красный, чтобы это было очевидно на скриншоте, но лучший цвет для общего случая - черный.)


Обратите внимание, что сортировка может быть доступна либо через DataSort & FilterSort меню, ярлык эквивалент Alt + + S или из любой из выпадающих в клетке, когда режим фильтра ( Alt + + T ) включен (при условии, конечно, есть строка заголовка, пустая или нет, так как в противном случае сортировка не может быть гарантированно работать правильно):

Worksheet Screenshot showing how to access Custom Sort from In-cell Dropdown


По сути, сортировка по цвету добавляет функцию группировки при сортировке, аналогичную той, что доступна в SQL.

Эта группировка может быть довольно сложной, включая использование нескольких столбцов для критериев, при этом все же требуется только двухуровневая сортировка. Можно выполнить даже «вложенные» группировки - они просто требуют дополнительных уровней сортировки.

robinCTS
источник
1
Это замечательно! Я не знал об этом.
Scott
1

Вот без скрытия строк, без фильтрации, без вспомогательных столбцов, без условного форматирования, два - трехступенчатое решение, о котором я упоминал в комментарии к самоответу ОП. Было подтверждено, что работает в Excel 2007.

Шаг 1

Сортировать по столбцу B на Values заказан Smallest to Largest:

Worksheet Screenshot showing First Sort

Обратите внимание, что хотя отображается строка заголовка, она не обязательна. (См. Примечания для получения дополнительной информации.)

Шаг 2

Выделите верхнюю часть таблицы до последней строки с непустым значением в столбце. B, Для примера таблицы это будет A1:C5,

Лучший способ сделать это для большого количества строк и / или столбцов (но одинаково хорошо подходит для небольших таблиц и избежать прокрутки вручную или с помощью мыши) - это следующая комбинация клавиш, начиная с любой непустой ячейки в B колонка:

  • Ctrl + вниз ;
  • Ctrl + Правильно столько раз, сколько требуется, чтобы добраться до самого правого столбца таблицы (или просто удерживайте его, чтобы добраться до правого края листа);
  • ( Ctrl + Оставил если вы вышли за пределы и оказались в начале следующей таблицы или в крайнем правом столбце листа);
  • Ctrl + сдвиг + Главная ;

Если справа от таблицы нет других данных, можно использовать эту альтернативную последовательность:

  • Ctrl + вниз ;
  • Ctrl + сдвиг + вверх ;
  • сдвиг + Космос

Шаг 3

Сортировать по столбцу A на Values заказан A to Z:

Worksheet Screenshot showing Second Sort


Заметки:

  • Сортировка на шаге 1 может быть выполнена либо через DataSort & FilterSort пункт меню (или его ярлык-эквивалент Alt + + S ) или из выпадающего списка внутри ячейки, когда включен режим фильтра (если, конечно, есть строка заголовка).
  • Сортировка может шаг 3, может только Быть выполненным через пункт меню.
  • Этот метод гарантированно работает, даже если данные таблицы начинаются в строке 1 и не имеет строки заголовка. Только мои два решения (плюс ОП, конечно) будут работать для этого случая. Фактически, эти решения являются единственными, которые будут работать или даже могут работать для строки без заголовка 1 таблица, если первая ячейка столбца B пустым
  • Он также будет работать независимо от состояния режима фильтра. (Если, конечно, таблица не содержит заголовков, начинается в первой строке, и по какой-то причине режим фильтра включен. В этом случае выключите его и оставьте его уже!)
robinCTS
источник
: D Я чувствую, что ответ на введение: Но вам все равно нужно вручную выбрать только часть таблицы. Это будет с помощью прокрутки, если это большая таблица и ячейки не пусты. Но теперь я могу объяснить, почему я «предпочитаю» описывать свою альтернативу, а не другие: мое решение не изменится или ему потребуется больше времени для выполнения, когда наборы данных станут больше. И для этого не нужно использовать вспомогательные столбцы. Чтобы дать вам кредит: мне нравится разнообразие ваших идей! :) Итак, давайте закроем нашу дискуссию сейчас, хорошо ?!
Albin
Прокрутка не ¹ требуется в больших таблицах для этого решения (в отличие от других). Для этого требуется всего три сочетания клавиш. "менять" (???) или же «нужно больше времени для выполнения» (???), когда набор данных становится больше. Не использует «Вспомогательный» (помощник?) столбцы. … If Даже если колонка B вместо этого другой столбец, например, справа ZZ:ZZ, В каком случае последовательность Ctrl + G; ZZ:ZZ; Enter доставит вас туда. (Обратите внимание, что этот случай повлияет на это решение Меньше чем некоторые другие решения.)… ² Чуть больше, чем три под очень необычные обстоятельства.
robinCTS
Итак, вы не хотите заканчивать дебаты. Итак, сначала я хотел бы проверить, какова ваша цель здесь? Вы просто хотите услышать, что вы правы, или вы действительно заинтересованы в этом вопросе, таким образом, готовы и мотивированы обсудить это?
Albin
0

Кажется, что нет способа сделать то, что я хочу строго через сортировку, но вот что работает для меня:

  1. Сортировать строки по столбцу B от малого к большому

  2. Скрыть все строки, которые делают не имеют значения в столбце B

  3. Сортировать строки по столбцу А по алфавиту

John Doe
источник
В качестве альтернативы скрытию строк на шаге (2), вы можете просто выбрать часть таблицы, которая делает иметь значения в столбце B, Сортировка на шаге (3) будет производиться только на выбранную вложенную таблицу (при условии, что вы сортируете через DataSort & FilterSort а не из выпадающего списка внутри режима фильтра). Преимущество этого метода в том, что вы не получите скрытых строк. (Это может или не может быть проблемой в вашем конкретном случае.)
robinCTS
Я думал, что уже пробовал, и он все еще сортировал всю таблицу, даже не подсвеченную область.
John Doe
Я пытался только в Excel 2007, но я ожидаю, что он все еще должен работать для более поздних версий. Можете ли вы подтвердить, работает ли она с вашей версией Excel?
robinCTS
есть ли причина, по которой вы не «скрываете» скрытые строки?
Albin
Я не скрываю строки в этот момент, потому что я использую этот файл для управления коллекцией; Я делаю правки в файле, и меня интересуют только строки, в которых я использую элементы коллекции.
John Doe
-2

Одним из решений было бы объединить сортировку и фильтрацию. Лучше всего, если у вас есть заголовки столбцов в первой строке, но они не обязательно нужны.

Это не просто сортировка, как вы просили, она использует фильтр. Но вы можете просто «выбрать» всю таблицу (собственно, включение режима фильтра сделает это за вас), выполнить шаги и вуаля. Также довольно легко «преобразовать» его в макрос. Что касается других решений, это решение не требует, чтобы вы скрывали (или «отменяли») нежелательные строки вручную. Также вам не нужно вводить дополнительную формулу (посредством условного форматирования столбца A или B или путем добавления другого столбца).

Во всяком случае здесь это идет:

Включите фильтр:

  • выберите любую ячейку в своем списке и включите режим фильтра (на ленте вы найдете ее на вкладке «Данные», она должна называться «Фильтр»). Вы увидите маленький треугольник в первом ряду каждого столбца, который вы используете

    (примечание: если у вас нет заголовков столбцов, просто добавьте пустую строку в самом начале и выберите все используемые столбцы вручную, в данном случае A и B, вместо «просто» выбора ячейки в списке)

Переместите строки без значения B в конец списка:

  • сортировать столбец B в порядке возрастания (нажав маленькую треугольную кнопку в первой строке столбца B и выбрав сортировку по значению по возрастанию)

Сортировать колонку А и отключить / удалить фильтр

  • отфильтровать строки с пустыми ячейками в столбце B (снова щелкнув по треугольной кнопке и сняв отметку со значения «пусто» в нижней части списка)
  • сортировать столбец A в порядке возрастания (аналогично сортировке столбца B)
  • отключить расширенную фильтрацию (так же, как вы ее включили), это автоматически удалит фильтр для пустых ячеек в столбце B

Это должно дать вам правильный результат, насколько я вас понял. Вам также не нужно будет скрывать какие-либо строки вручную, Excel скроет все строки для вас.

(обратите внимание, что скрытие строк вручную отличается от использования фильтра для «скрытия» их)

Albin
источник
что-нибудь, что я мог бы улучшить, чтобы избавиться от отрицательных голосов? предложения приветствуются!
Albin