excelperfect 在《Excel公式技巧39: COUNTIF函数在文本排序中的应用》中,我们使用COUNTIF函数来求得单元格区域中文本的顺序号,然后根据该顺序号获得相应的文本,从而实现文本排序。本文不使用辅助列,直接使用一个数组公式来获得排序文本。 如下图1所示,列A中是没有排序的文本,列B中是排好序的文本。 图1 在单元格B2中的数组公式是: =INDEX(List,MATCH(SMALL(COUNTIF(List,'<'&List),ROW(1:1)),COUNTIF(List,'<'&List),0)) 其中,List是一个定义的名称。 名称:List 引用位置:=Sheet1!$A$2:$A$7 这个公式的核心是COUNTIF函数部分,判断指定的字符串是否小于列表中其他字符串面得到一组数字,即: COUNTIF(List,'<'&List) 转换为: {5;0;2;3;0;3} 表明,在单元格区域A2:A7中,有5个小于单元格A2中的“DDD”、没有小于单元格A3中的“AAA”、有2个小于单元A4中的“BBB”、…,依此类推。 这样,单元格B2中的公式转换为: =INDEX(List,MATCH(SMALL({5;0;2;3;0;3},ROW(1:1)),{5;0;2;3;0;3},0)) 转换为: =INDEX(List,MATCH(SMALL({5;0;2;3;0;3},1), {5;0;2;3;0;3},0)) 转换为: =INDEX(List,MATCH(0,{5;0;2;3;0;3},0)) 转换为: =INDEX($A$2:$A$7,2) 得到: AAA 当公式向下拉时,ROW(1:1)将相应变化,从而获取不同的文本值。 |
|
来自: hercules028 > 《excel》