Трюк №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.

Top