2015-07-10 93 views
2
alphabetise

我目前正在起草一個電子表格,將自動刪除重複項,按字母順序排列的列表:排序公式在Excel

enter image description here

我使用在G列COUNTIF()函數來創建排序順序,然後用VLOOKUP()查找列J中的排序。

我遇到的問題是,我似乎無法讓我的SortOrder列正常工作。目前,它創造了兩個1號的意思以黃色突出顯示該小區的指數被遺漏了,並在排序列表中的最後一項爲空:

enter image description here

如果任何人都可以找到並糾正這個錯誤,我我會非常感激,因爲它一整天都在令我瘋狂!非常感謝。

+0

你是如何試圖理清J列? J中使用的公式是什麼? – BruceWayne

+1

D欄中* 20212 *的性質是什麼?它只是一個強制左對齊的數字,或者實際上看起來像一個數字的文本?你能改變G列中的計數公式爲:= COUNTIF(D $ 2:INDEX(D:D,MATCH(「zzz」,D:D)),「<=」&TEXT(D2,「0; @」)) '? – Jeeped

回答

1

我將提供我的常規方法做原始數據的自動拉入到排序,重複除去的列表:

假設原始數據在列A在B列,使用以下公式每次在列A中顯示非重複項時增加計數器。Hardcord B2爲「1」,並在B3中使用此公式並向下拖動。

=if(iserror(match(A3,$A$2:A2,0)),B2+1,B2) 

這需要的事實,當我們將此行計數器在我們修訂後的目錄中,我們將使用匹配功能,優勢只有第一個匹配多項檢查。然後說你想在列D上列出新的數據列表(通常我這樣做是爲了顯示目的,所以無論是「分組」[隱藏]形成公式的列,還是在另一個選項卡上執行此操作)。你可以避免這一步,但如果你已經在使用助手列,我通常會在不同的列中執行每一步 - 更容易記錄。在柱C,在C3開始〔C2硬編碼爲1]和向下拖動,只是有一個簡單的計數器,其錯誤檢查,以在列表的末尾停止:

=if(C2<max(B:B),C2+1," ") 

然後,在列d,開始在D2並拖累:

=iferror(index(A:A,match(C2,B:B,0)),"") 

索引功能就像是VLOOKUP函數的一半 - 它拉出來的結果給定陣列,當你爲它提供一個行號。匹配函數就像vlookup函數的另一半 - 它爲您提供了一個項目在給定數組中出現的行號。

希望這可以幫助你在未來。

1

Jeeped的評論暗示出現這種錯誤的實際原因是您無法將字符串與數字進行有意義的比較,除非您進行轉換,因爲它們的存儲方式不同。所以COUNTIF分別統計數字和文字。

20212將會計數1,因爲它是唯一的(或最小的)數字。

CS10Z002將計數爲1,因爲它是按字母順序排列的第一個文本字符串。

另一種方法是數字的計數添加到計數,如果當前單元格包含文本: -

=COUNTIF(INDIRECT("$D$2:$D$"&$F$3),"<="&D2)+ISTEXT(D2)*COUNT(INDIRECT("$D$2:$D$"&$F$3)) 

它更容易表現出的一些測試數據三個不同的轉換中,結果: -

(0)否轉換 - 只需使用COUNTIF

=COUNTIF(D$2:D$7,"<="&D2) 

「999」 < 「ABC」 < 「高清」,999

(1)計數一切爲文本

=SUMPRODUCT(--(D$2:D$7&""<=D2&"")) 

「1000」 < 「999」

(2)文本之前計數數字

=COUNTIF(D$2:D$7,"<="&D2)+ISTEXT(D2)*COUNT(D$2:D$7) 
「999」

(3)計數的一切,但文本轉換與領先的零

=SUMPRODUCT(--(TEXT(D$2:D$7,"000000")<=TEXT(D2,"000000"))) 

「000999」= 「000999」 號碼, 「000999」 < 「001000」

enter image description here