2011-07-05 77 views

回答

4

要手動執行此操作,您可以突出顯示要排序的所有列,然後單擊「主頁」選項卡中「排序&篩選器」下的「自定義排序...」。這會彈出一個對話框,您可以告訴它要排序的列,添加多個排序級別等。

如果您知道如何在Excel中手動執行某些操作,並想了解如何以編程方式使用VBA執行操作,你可以簡單地記錄一下自己做的宏,然後看看它生成的源代碼。我這樣做是基於B列的列A和B排序,並從拉產生什麼樣的相關代碼:

ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B1:B6"), _ 
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
With ActiveWorkbook.Worksheets("Sheet1").Sort 
    .SetRange Range("A1:B6") 
    .Header = xlGuess 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 

需要注意的是自動生成的代碼幾乎總是有不必要的膨脹,但。但是,找出您可能需要使用或研究的功能是一種很好的方法。在這種情況下,你可以修剪下來的東西是這樣的:

Range("A1:B6").Sort Key1:=Range("B1:B6"), Order1:=xlAscending 

如果你只是要重新排序列A的內容而不觸及列B(即使你使用它作爲排序鍵),您可能需要製作一個臨時副本,對其進行排序,然後僅複製A列。這是因爲Excel的排序功能要求排序鍵位於正在排序的範圍內。因此,它可能是這樣的:

Application.ScreenUpdating = False 
Range("A1:B6").Copy Destination:=Range("G1:H6") 
Range("G1:H6").Sort Key1:=Range("H1:H6"), Order1:=xlAscending 
Range("G1:G6").Copy Destination:=Range("A1:A6") 
Range("G1:H6").Clear 
Application.ScreenUpdating = True 
+1

+1,但..是有辦法做到這一點與公式? (無vba) –

+0

@belisarius我跑過[這](http://www.get-digital-help.com/2009/03/27/sorting-text-cells-using-array-formula/),同時環顧四周,儘管它可能不是您尋找的解決方案。您可以通過將第一個「List」更改爲包含與「List」相同數量項目的不同命名範圍,即'= INDEX(RangeToSort,MATCH(...)(將其餘範圍如果在用作排序關鍵字的範圍內存在重複的項目,那麼解決方案可能會有問題... – Brandon

+0

是的,重複的項目會破壞這種方法 –

0

謝謝@brunosan:d

我終於得到了答案,因爲@brunosan問題幾天後我沒有找到答案在Excel電子表格中關於我的問題。基於@brunosan的問題,我嘗試了排序公式,突然間我在谷歌電子表格上嘗試了另一種「排序」選項。

,所以這是我的問題,我已經解決了:

我在A列的值,但在A列中的值必須被更新。更新後的數據放在B列中,因此我將原始數據保留在A列中以便稍後進行比較。與圖象

before

但麻煩的是在列B中的更新的數據(基於列的數據)相同處理不當與A列中可以在上面的圖片看到了結構化。一些數據已被刪除或丟失,所以我有一個空行。

現在的問題是,我想替換相同的結構與列A的更新數據。這是不存在的數據保留空白。所以我嘗試在谷歌表中選擇所有列和排序範圍,然後選擇排序列A和瞧,我想要的結果。 :D見下圖。

after

你能想象我有100個數據,直到萬個數據,那麼多的時間浪費,如果我一個,直到滴選一:d。

注:我對模糊數據惋惜:d

相關問題