首页 > Excel专区 > Excel函数 >

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

Excel函数 2023-01-13

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

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

在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),),)&""

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

公式说明:

1.“COUNTIF($A$2:$A$14,"<="&$A$2:$A$14)”比较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”,在公式的末尾加上“&""”将其转换为空。

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),),)&""


Copyright © 2016-2023 office学习教程网 office.tqzw.net.cn. All Rights Reserved.