`
阅: 1870 | 回: 0
发表于2015/10/25 12:58:30 楼主 
头像 等级:初学者
积分:0
财富值:0.0
身份:普通用户
按降序或升序依次提取某列中的文本
在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:



我的个性签名

快速回复

目前不允许游客发表,请 登录 注册 后再发贴。