excelperfect 我们知道,COUNTIF函数通常用于查找指定单元格区域中满足条件的单元格数量。然而,COUNTIF函数有一个比较有用的用法,它可以统计指定区域中大于或小于指定值的单元格数量。例如,公式: COUNTIF({a,b,c,d,e,f,g,h},'<c') 返回值2,表示数组中比c小的字母有2个,那么如果由小到大排的话,c应该排在第3位。 因此,使用COUNTIF函数,我们可以找到单元格区域中任意单元格中值的顺序。当我们知道这些顺序后,就可以使用VLOOKUP函数来查找对应的单元格中的值,从而实现按顺序对这些单元格中的值排序。 简单地说,使用COUNTIF函数,我们可以对单元格区域中的文本排序。 如下图1所示,在单元格B6中,使用公式: =COUNTIF($C$6:$C$15,'<='&C6) 得到单元格C6中的文本在单元格区域C6:C15的文本中,由小到大排在第10位。 将公式下拉至单元格B15,得到相应的列C中文本在单元格区域C6:C15中文本的排序位置。 图1 在单元格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,得到同样的结果。 注:本文讲解的技术学习自chandoo.org,这里对其进行了补充和扩展。 欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。 欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。 |
|
来自: hercules028 > 《excel》