设为首页收藏本站

嘻皮客娱乐学习网

 找回密码
 中文注册
搜索
打印 上一主题 下一主题
开启左侧

[Excel技巧] 用数组公式从一列中提取非空单元格值

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-10 10:09:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如果Excel工作表的某列中包含一些空单元格,要去掉这些空单元格,将非空单元格内容放到另一列中,最快的方法是通过筛选隐藏空单元格,再复制到其他列中。如果不使用筛选,还可以用下面的数组公式:
   
    假如数据在A2:A20区域中,将提取后的数据放到B列中,在B2单元格中输入数组公式:
    =INDEX($A$2:$A$20,SMALL(IF($A$2:$A$20="","",ROW($A$2:$A$20)-ROW($A$2)+1),ROW($A2)-ROW($A$2)+1))
    公式输入完毕后按Ctrl+Shift+Enter结束,然后向下填充公式,直到出现“#NUM!”为止。
    说明:
    SMALL函数的语法为:
    SMALL(array, k)
    返回数据集“array”中的第“k”个最小值。
    公式中SMALL函数的第一个参数“IF($A$2:$A$20="","",ROW($A$2:$A$20)-ROW($A$2)+1)”产生一个数组:
    {1;"";"";4;"";"";7;8;"";"";11;12;13;"";"";"";17;"";19}
    该数组中的数字为A2:A20区域中非空单元格对应的位置,而空引号则对应区域中的空单元格。
    第二个参数“ROW($A8)-ROW($A$2)+1”根据B列中单元格的位置依次返回“1”、“2”、“3”……
    上述数组中,第1个最小值为“1”,第2个最小值为“4”,……。这样就用SMALL函数“去掉”了数组中的空值,最后用INDEX函数返回一列连续的非空单元格值。本例由于A2:A20区域中只有9个非空单元格,当SMALL函数的第2个参数为“10”时就会出现错误,说明A列中的非空单元格值已返回完毕。
回复

使用道具 举报

小黑屋|手机版|嘻皮客网 ( 京ICP备10218169号|京公网安备11010802013797  

GMT+8, 2024-5-11 22:05 , Processed in 0.247840 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表