2013-06-21 1 views
1

Я пытаюсь сортировать большое количество списков от A до Z. Но если я сортирую столбец A, я не хочу, чтобы все остальные столбцы были перегруппированы. Мне нужны все эти списки, чтобы они были сортированы по алфавиту. Я знаю, что это возможно сделать один за другим, но у меня есть 278 столбцов. Есть ли способ автоматизировать его?Независимо сортировать несколько столбцов в excel

+0

Голосование, чтобы закрыть как «не настоящий вопрос», это принадлежит Superuser, а не Stack. –

ответ

4

Если нет пустых ячеек в любом из данных столбцы, то следующее несколько иной подход, который не принимает максимум для числа строк.

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 к тому, что вы ожидаете, будет больше, чем максимальное количество данных рядами.

+0

Похоже, что есть некоторые пробелы, поэтому он выглядит так: http://i.imgur.com/FItNV7M.png Знаете ли вы, как я мог это очистить? – Batman

+0

Затем придерживайтесь метода user1281385 (после исправления пробелов и новой строки). В качестве альтернативы, мой метод можно было бы немного изменить: измените на '.SetRange ws.Range (rng, rng.Range (« A1000 »). End (xlUp))'. Измените A1000 на то, что вы ожидаете, будет больше максимального количества строк. –

+0

Я попробовал запустить вышеуказанный код с изменением пробелов и сменил A1000 на A100. Но это ничего не меняет. Там пробелы на самом деле были худшими и применялись к большему количеству столбцов, чем раньше. – Batman

1

Выберите столбец для сортировки, затем нажмите «Сортировка и фильтрация» коробка придумает говоря

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 

Должно работать

+0

Есть ли способ сделать это для нескольких столбцов сразу, потому что у меня есть 278 столбцов. – Batman

+0

Вы не можете сделать это все сразу. Вы можете записать макрос, сделав это для первого столбца. Затем измените макрос, используя цикл, чтобы повторить процесс для всех остальных столбцов. –

+0

последние две строки перед следующим я даю мне ошибку. – Batman

 Смежные вопросы

  • Нет связанных вопросов^_^