Я пытаюсь сортировать большое количество списков от A до Z. Но если я сортирую столбец A, я не хочу, чтобы все остальные столбцы были перегруппированы. Мне нужны все эти списки, чтобы они были сортированы по алфавиту. Я знаю, что это возможно сделать один за другим, но у меня есть 278 столбцов. Есть ли способ автоматизировать его?Независимо сортировать несколько столбцов в excel
ответ
Если нет пустых ячеек в любом из данных столбцы, то следующее несколько иной подход, который не принимает максимум для числа строк.
Sub SortIndividualJR()
Dim rngFirstRow As Range
Dim rng As Range
Dim ws As Worksheet
Application.ScreenUpdating = False
Set ws = ActiveSheet
Set rngFirstRow = ws.Range("A1:JR1")
For Each rng In rngFirstRow
With ws.Sort
.SortFields.Clear
.SortFields.Add Key:=rng, Order:=xlAscending
'assuming there are no blank cells..
.SetRange ws.Range(rng, rng.End(xlDown))
.Header = xlYes
.MatchCase = False
.Apply
End With
Next rng
Application.ScreenUpdating = True
End Sub
Нет ничего плохого в коде пользователя1281385; как я уже сказал, это просто альтернатива.
Добавлено Если есть некоторые пробелы, то изменить код выше, чтобы использовать .SetRange ws.Range(rng, rng.Range("A1000").End(xlUp))
, изменение 1000 к тому, что вы ожидаете, будет больше, чем максимальное количество данных рядами.
Похоже, что есть некоторые пробелы, поэтому он выглядит так: http://i.imgur.com/FItNV7M.png Знаете ли вы, как я мог это очистить? – Batman
Затем придерживайтесь метода user1281385 (после исправления пробелов и новой строки). В качестве альтернативы, мой метод можно было бы немного изменить: измените на '.SetRange ws.Range (rng, rng.Range (« A1000 »). End (xlUp))'. Измените A1000 на то, что вы ожидаете, будет больше максимального количества строк. –
Я попробовал запустить вышеуказанный код с изменением пробелов и сменил A1000 на A100. Но это ничего не меняет. Там пробелы на самом деле были худшими и применялись к большему количеству столбцов, чем раньше. – Batman
Выберите столбец для сортировки, затем нажмите «Сортировка и фильтрация» коробка придумает говоря
Expand selection
continue with current selection
Выберите продолжить текущего выбора
Затем выберите как вы хотите отсортировать. Повторите для каждого столбца, который вы хотите отсортировать.
Expand выбор опция по умолчанию
Макро
Dim oneRange as Range Dim aCell as Range For I = 1 to 278 Set oneRange = Range("r1c" & I & ":r1000c" & I) Set aCell = Range("r1c" & I) oneRange.Sort Key1:=aCell, Order1:=xlAscending, Header:=xlYes Next I
Должно работать
Есть ли способ сделать это для нескольких столбцов сразу, потому что у меня есть 278 столбцов. – Batman
Вы не можете сделать это все сразу. Вы можете записать макрос, сделав это для первого столбца. Затем измените макрос, используя цикл, чтобы повторить процесс для всех остальных столбцов. –
последние две строки перед следующим я даю мне ошибку. – Batman
Голосование, чтобы закрыть как «не настоящий вопрос», это принадлежит Superuser, а не Stack. –