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