我们知道,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中文本的排序位置

COUNTIF函数在文本排序中的应用

在单元格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,得到同样的结果。

发表回复