假設原始數據在A列的A2:A10
B2數組公式:
•=INDEX(A:A,MIN(IF(COUNTIF(B$1:B1,A$2:A$10),4^8,ROW($2:$10))))&""
注意是數組公式, 輸入方法為: 先在B2輸入一個=號, 再粘貼=號后面的部分, 然后同時按
Ctrl+Shift+回車鍵 (俗稱: "三鍵" , 結束)
下拉
注: 原始數據至少從第二行開始, 這是前提條件
公式雖然簡單, 但解釋起來卻不容易,就從里向外說吧:
•COUNTIF(B$1:B1,A$2:A$10)
這個函數是依次判斷A2,A3,…,A10在B列(公式所在單元格上方區域)出現的數次, 如果返回值為0, 說明沒在B列沒出現過, 相當于FLASE, 否則為TRUE(出現過)
•IF(COUNTIF(B$1:B1,A$2:A$10),4^8,ROW($2:$10))
IF語句判斷如果COUNTIF()返回值不為0, 即當前公式所在單元格在A列已經出現過, 則返回值為4^8(即65536, 相當于一個極大的數或不可能有數據的單元格), 否則, 返回在A列沒出現過的數據的行號, 這個行號由ROW($2:$10)生成的數組決定
•MIN(IF(COUNTIF(B$1:B1,A$2:A$10),4^8,ROW($2:$10)))
MIN這個函數負責將此公式單元格上方沒有在A列出現過的, 而且又是IF得到的行號的最小的序數提供給INDEX, 這也是INDEX函數第二個參數的最后一個環節.
•&""
這個段代碼可有可無, 目的的在INDEX()返回為0的時候, 將其轉換為空值, 也就是不顯示零值.
這樣說有點抽象, 如果公式的哪段不明白, 可以在公式欄用鼠標涂黑, 然后按F9觀察這段公式的計算結果, 慢慢想通了, 一點一點地, 整個公式也就明白了.