2010-03-08 65 views
2

我有一個電子表格,我基於「項目編號」列進行排序。因此,如果項目號碼列具有以下值:在Excel問題中排序值

2.2 
2.1.b 

我希望2.1.b行在2.2行之前。但是,Excel中的排序功能提前2.2。它必須根據字符數確定值。

有沒有辦法對VBA中的列進行排序?

回答

2

這可以很容易地在Excel中創建一個「自定義列表」,然後在該列表上進行排序。

自定義列表允許您創建自己的默認排序順序。您可以創建一個新的自定義列表,如下所示:「0,1,2,3,4,5,6,7,8,9,...,a,b,c,d,e,f,g,h,i, J,K,L,M,N,O,p,q,R,S,T,U,v,W,X,Y,Z」。如果你的排序需要更多的邏輯,你可以添加。

這個新列表將根據數字先排序,然後是一個字母。

您創建列表時,首次排序時選擇「自定義排序」,選擇您的新列表,然後就完成了。現在,當您排序時,數據將根據您的新標準進行排序。

0

我會用一個公式添加一個隱藏的列到2.1.B格式轉換爲簡單的,可排序的數值,像10000*(first digit) + 100*(second digit) + (ascii(letter) - 'a'),其中:第一位數= 10000*NUM(SUBSTRING(A1;FIND(".", A1)) ...等

1

你不需要用代碼來做到這一點 - Excel支持此內置:

  1. 格式整列的「數字格式」爲文本,不通則。
  2. 您將不得不重新輸入以前輸入的任何數字條目。

作爲替代步驟2(如果你已經有很多預先存在的條目),您可以使用TEXT功能,要麼排序該列或複製和粘貼值覆蓋原來的列值。

我在Excel 2007中測試了這個,但我很肯定這種行爲已經存在了一段時間了。

1

如果用撇號爲每個值加上前綴,則這會向Excel表明該值是文本而不是數字。

至少這是理論。

對於試圖修復看起來像數字的文本,Excel非常激進。它會在每個單元格上顯示一個數字格式爲文本(「duh!」)的通知,然後您必須選擇「忽略錯誤」(沒有「它不是真正的數字」選項)。

然後將數字格式從「常規」更改爲「文本」,只是爲了更好的衡量。

然後,當您嘗試對其進行排序時,它會再次嘗試握住您的手並修復您的「錯誤」。通過選擇「分開存儲爲文本的數字和數字」,您可以使其按照自己的意願進行。 (沒有「這全是[adjectival explicative]文字,[interjective explicative]!」選項,遺憾地)。