將 B 列進行排序,同時保持 A 列的順序

將 B 列進行排序,同時保持 A 列的順序

在 Excel 中,我有 2 個欄位。我想按字母順序對第二個進行排序,同時保持第一個中的(自訂)順序(想想 std::stable_sort ,其中相等性僅基於第一列)。例子:

dsf   k
www   d
www   a
azd   q
azd   e
azd   b

應該成為

dsf   k
www   a
www   d
azd   b
azd   e
azd   q

排序精靈似乎沒有任何“保持當前順序”選項。我可以定義自訂順序,但我有一千多個不同的元素;這確實是一件很痛苦的事情,而且這個客製化訂單可以隨時更改。

答案1

我假設您的資料從第 2 行開始,並且該列C可用作「輔助列」。放

=IF(A1=A2, C1, C1+1)

進入細胞C2。 (如果 ColumnC不可用,請使用該列。如果您的資料從第 1 行開始,請插入一個空白行,或(仍然)將上述內容放入 cell 中C2,但放入1cell 中C1。)向下拖曳/填充。此(列C)現在「記錄」您的自訂訂單;例如,C2= 1、== C32C4C5= C6== C73 CB

答案2

又快又髒:-

  1. 將 A 列的內容複製到記事本中,然後重新複製到剪貼簿。
  2. 選擇兩列。
  3. 選擇排序功能並使用「自訂清單」順序對列 A 進行排序。
  4. 將剪貼簿中的資料輸入到自訂清單中。
  5. 在排序函數中新增一個級別,然後按 B 列「從小到大」排序。

答案3

我認為你最好的選擇是使用客製化訂單。如果不需要經常更新,您可以FILE>OPTIONS>ADVANCED>EDIT CUSTOM LISTS...直接匯入整個範圍。然後在排序時使用它。

VBA 解決方案類似於

子排序()
將 iCustListNum 調暗為整數

iCustListNum = 應用程式.CustomListCount + 1
Application.AddCustomList ListArray:=Range("A2:A100")

出錯時轉到錯誤:

'對你的清單進行排序
範圍(“A1:B100”).sort Key1:=範圍(“A1”),Order1:=xlAscending,OrderCustom:=iCustListNum,_
    鍵2:=範圍(“B1”),順序2:=xl升序,標題:=xl是,_
    符合大小寫:=False,方向:=xlTopToBottom

'清理
呃:
Application.DeleteCustomList ListNum:=iCustListNum

結束子

相關內容