我們知道,COUNTIF函數通常用于查找指定單元格區域中滿足條件的單元格數量。然而,COUNTIF函數有一個比較有用的用法,它可以統計指定區域中大于或小于指定值的單元格數量。例如,公式:
COUNTIF({a,b,c,d,e,f,g,h},”<c”)
返回值2,表示數組中比c小的字母有2個,那么如果由小到大排的話,c應該排在第3位。
因此,使用COUNTIF函數,我們可以找到單元格區域中任意單元格中值的順序。當我們知道這些順序后,就可以使用VLOOKUP函數來查找對應的單元格中的值,從而實現按順序對這些單元格中的值排序。
簡單地說,使用COUNTIF函數,我們可以對單元格區域中的文本排序。
如下所示,在單元格B6中,使用公式:
=COUNTIF($C$6:$C$15,”<=”&C6)
得到單元格C6中的文本在單元格區域C6:C15的文本中,由小到大排在第10位。
將公式下拉至單元格B15,得到相應的列C中文本在單元格區域C6:C15中文本的排序位置。
在單元格E6中的公式為:
=VLOOKUP(ROW()-ROW($E$5),$B$6:$C$15,2,FALSE)
其中,ROW()-ROW($E$5)的值為1,即查找單元格區域B6:C15中列B中的值為1對應的列C中單元格的值,也就是單元格區域C6:C15中最小的文本。
將該公式向下拉至單元格E15,得到排序好的文本。當將公式向下拉時,隨著行的變化,ROW()-ROW($E$5)的值也不斷變化,從而取得相應的值。
注意,如果擔心“順序號”列中有重復值,可以使用公式:
=VLOOKUP(SMALL($B$6:$B$15,ROW()-ROW($E$5)),$B$6:$C$15,2,FALSE)
上面的列B實際上是我們使用的輔助列,這樣使整個運算過程更清楚。其實,可以不使用輔助列,直接使用一個數組公式。在單元格E6中輸入數組公式:
=VLOOKUP(ROW()-ROW($E$5),CHOOSE({1,2},COUNTIF($C$6:$C$15,”<=”& $C$6:$C$15),$C$6:$C$15),2,0)
下拉至單元格E15,得到同樣的結果。