Excel будет сортировать по крайнему левому полю (или «Столбцу») в вашем выделении и соответственно перемещать соответствующие значения для каждой строки.
Я записал макрос, а затем отредактировал его дляты, и я считаю, что это должно работать.Просто выберите все значения и запустите макрос:
Option Explicit
Sub SortColumnsIndividually()
Dim Column As Range
For Each Column In Selection.Columns
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Column, _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveSheet.Sort
.SetRange Column
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Next Column
End Sub
Почему Excel это сделал?
Это происходит потому, что Excel обрабатывает каждую строку как коллекцию связанных значений ,Например, рассмотрим следующую таблицу:
+-----------+-----------+--------+
| FirstName | LastName | Salary |
+-----------+-----------+--------+
| Bob | Smith | 45000 |
| Jane | Doe | 55000 |
| Susan | Black | 48000 |
| Frank | Daniels | 51000 |
+-----------+-----------+--------+
Скажем, вы хотите отсортировать по окладу от наименьшего к наибольшему.Можно ожидать, что когда Excel перемещает значения зарплаты, он также перемещает связанные Имя и Фамилии, в отличие от сортировки только поля зарплаты.
Таким образом, сортируя эту таблицу по Зарплате в порядке возрастания, вы быожидайте этого результата:
+-----------+-----------+--------+
| FirstName | LastName | Salary |
+-----------+-----------+--------+
| Bob | Smith | 45000 |
| Susan | Black | 48000 |
| Frank | Daniels | 51000 |
| Jane | Doe | 55000 |
+-----------+-----------+--------+
НЕ это (Посмотрите, как имена теперь сопоставляются с разными зарплатами?):
+-----------+-----------+--------+
| FirstName | LastName | Salary |
+-----------+-----------+--------+
| Bob | Smith | 45000 |
| Jane | Doe | 48000 |
| Susan | Black | 51000 |
| Frank | Daniels | 55000 |
+-----------+-----------+--------+
Поскольку приведенный выше случай является представительным для подавляющего большинства сортировкизадачи, которые выполняют пользователи Excel, это ожидаемое поведение для Excel.