Трюк №29. Как в Excel сортировать данные более чем по трем столбцам
Средство Сортировка (Sort) в Excel ограничено возможностью сортировки только по трем полям. В большинстве случаев этого достаточно, но иногда бывает удобно сортировать более чем по трем столбцам данных. Вот как можно обойти это ограничение.
Для этого примера мы предполагаем, что у вас есть некоторым образом связанные данные в столбцах А, В, С, D и Е, и вы хотите отсортировать эти данные сначала по столбцу А, затем по столбцу В, затем по С, по D и по Е. Для этого нужно уметь сортировать в обратном порядке, другими словами, сначала сортировать по последнему полю, а затем по очереди продвигаться к первому.
Выделите столбцы с А по Е и выберите команду Главная > Сортировка (Home > Sort). Выберите порядок сортировки: сначала должен сортироваться столбец С, затем D, затем Е. Щелкните кнопку OK (Sort). Теперь снова выделите столбцы с А по Е и выберите команду Главная > Сортировка (Home > Sort). В этот раз сначала проведите сортировку по А, а затем по В. Щелкните кнопку OK (Sort), и все будет в порядке. Excel отсортирует столбцы по пяти полям вместо обычных трех.
Если вы хотите автоматизировать эту задачу, можно использовать макрос, который будет сортировать выделенный диапазон и угадывать, есть ли в столбцах данных заголовки, основываясь на форматировании первой строки выделенного диапазона. Если заголовки выделены жирным шрифтом, Excel поймет, что это заголовки столбцов, и не будет сортировать их. Сначала макрос проведет сортировку по самому левому столбцу, затем по следующему и так далее до самого правого. Можно указать до 256 столбцов.
Код этого макроса нужно поместить в стандартный модуль. Чтобы попасть туда, выберите команду Разработчик > Редактор Visual Basic (Developer > Visual Basic Editor) (Alt/Option+Fll), затем выберите команду Insert > Module и введите код из листинга 2.3.
1 2 3 4 5 6 7 8 9 | // Листинг 2.3 Sub SortByX() Dim l As Long For 1 = Selection.Columns.Count To 1 Step -1 Selection.Sort Key1:=Selection.Cells(2, 1), Order1:=xlAscending. Header:=xlGuess, Orientation:=xlTopToBottom Next 1 End Sub |
Чтобы вернуться в Excel, закройте окно или нажмите сочетание клавиш Alt/Apple+Q. Создав этот макрос, вы сможете выполнять намного более сложную сортировку, чем предлагают стандартные возможности Excel.