2013-06-21 153 views
1

我想排序從A到Z的大量列表。但是如果我排序列A,我不希望重新安排所有其他列。我需要所有這些列表按字母順序排序。我知道可以一個一個做,但我有278列。有沒有辦法使它自動化?在excel中獨立排序多列

+0

投票結束爲「不是真正的問題」,這屬於超級用戶,而不是堆棧。 –

回答

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 

user1281385的代碼沒有錯;正如我所說,這只是一種選擇。

新增如果有那麼一些空白修改上面的代碼中使用.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 

選擇與當前選擇繼續

然後選擇你想要的排序。重複你想要排序的每一列。

展開選擇默認選項

 
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