excel按降序或升序依次提取某列中的文本

网友投稿 494 2022-12-01

Excel按降序或升序依次提取某列中的文本

在Excel中要按降序或升序排列某列数据,通常只需对其排序即可。在不允许改变表格结构的情况下,对于数值类型的数据可用LARGE、SMALL等函数来提取,如公式“=LARGE($A:$A,ROW(A1))”。对于文本则无法直接使用LARGE函数,因为LARGE函数不支持文本,这时可用下面的数组公式。

假如A2:A14中包含一些文本和空单元格,要将其中的文本按字母顺序降序提取到B列,如图所示。

在B2单元格中输入数组公式:

=OFFSET($A,MATCH(LARGE(COUNTIF($A:$A,"<="&$A:$A),ROW(A1)),COUNTIF($A:$A,"<="&$A:$A),),)&""

公式输入后按Ctrl+Shift+Enter结束,然后填充公式到B14单元格,即可得到与降序排序完全相同的结果。

公式说明:

1.“COUNTIF($A:$A,"<="&$A:$A)”比较A2:A14中每个文本,并返回一个数组,本例为“{8;5;0;1;10;6;0;2;4;9;7;0;3}”,其中的每个数字对应各自文本,空单元格返回“0”。如“体操 Gymnastic”对应数字“8”,表示A2:A14中小于等于该文本值的数量为8个。

2.LARGE函数按从大到小的顺序(降序)依次提取上述数组中的各个数值,MATCH函数得到该数值在数组中的位置,最后用OFFSET函数提取文本。由于空单元格会返回“0”,在公式的末尾加上“&""”将其转换为空。

excel按降序或升序依次提取某列中的文本

3.要按字母顺序升序提取文本,将公式中的“<”改为“>”,如在B2中输入公式:

=OFFSET($A$1,MATCH(LARGE(COUNTIF($A$2:$A$14,">="&$A$2:$A$14),ROW(A1)),COUNTIF($A$2:$A$14,">="&$A$2:$A$14),),)&""

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:excel使用ERF函数返回误差函数
下一篇:excel向下取整函数INT使用教程
相关文章