Excel公式练习26:比较两列的值并提取不相同的数据
微信公众号:excelperfect
本次的练习是:如下图1所示,要提取列C中西区超市有而列A中东区超市没有的水果,如何编写公式呢?
图1
先不看答案,自已动手试一试。
公式
在单元格A10中的数组公式:
=IFERROR(INDEX($C$2:$C$6,SMALL(IF(ISNA(MATCH($C$2:$C$6,$A$2:$A$5,0)),ROW($C$2:$C$6)-ROW($C$2)+1),ROWS(A$10:A10))),"")
如图2所示。
图2
向下拖至单元格中没有数据为止。
公式解析
公式中的:
MATCH($C$2:$C$6,$A$2:$A$5,0)
在单元格区域A2:A5中依次查找单元格区域C2:C6中的值,如果找到则返回该值在单元格区域A2:A5中的位置,否则返回#N/A值,最后生成的数组为{#N/A;4;1;2;#N/A}。将数组传递给ISNA函数,生成数组{TRUE;FALSE;FALSE;FALSE;TRUE},作为IF函数的第1个参数。
公式中的:
ROW($C$2:$C$6)-ROW($C$2)+1
生成数组{1;2;3;4;5},作为IF函数的第2个参数。
这样,IF函数就生成数组{1;FALSE;FALSE;FALSE;5},作为SMALL函数的第1个参数。
公式中的:
ROWS(A$10:A10)
根据当前单元格生成一个数字,在A10中的数字为1,在A11中为2,将此数字作为SMALL函数的第2个参数。
公式演化为:
=IFERROR(INDEX($C$2:$C$6,SMALL({1;FALSE;FALSE;FALSE;5},1)),"")
SMALL函数求值后公式为:
=IFERROR(INDEX($C$2:$C$6,1),"")
获取单元格C2中的值。
扩展
如果要提取两列中相同的数据。如本例中,提取两个超市中都有的水果,数组公式为:
=IFERROR(INDEX($C$2:$C$6,SMALL(IF(ISNUMBER(MATCH($C$2:$C$6,$A$2:$A$5,0)),ROW($C$2:$C$6)-ROW($C$2)+1),ROWS(E$10:E10))),"")
小结
SMALL函数忽略参数中的任何非数字的数据。
ISNA函数将错误值转换为TRUE,否则为FALSE。ISNUMBER函数的运用同理。
IF函数一次性判断获取数组。
公式适用于Excel2007及以上版本。
下期预告
Excel公式练习27:从数据区域中提取满足多条件的值
如下图所示,单元格区域A8:D18中是销售数据,如何使用公式提取张三在2017年5月1日至2017年12月1日之间的销售数据?
本文属原创文章,转载请注明出处。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
欢迎关注[完美Excel]微信公众号:
方法1—在微信“添加朋友”或者通讯录中搜索“完美Excel”或者“excelperfect”后点击关注。
方法2—扫一扫下面的二维码
- 肚子一堆肉?经常练习这几个动作,变身小“腰”精!
- 练瑜伽的4大好处,你不得不知!但这3类人练习要注意
- 两仪拳混元养生功法怎么练习?
- 五款瑜伽经典食谱塑造苗条淑女
- 姑娘练习普拉提多年,展示细腰大粗腿身材S曲线,诠释身材的美感
- 哈尔滨:公园的小鸳鸯长大了 湖边玩耍练习飞行
- 华帝亮相体育营销峰会 解码足球营销新公式
- 腿部的力量如何练习
- 汇总目录|别找了,你需要的excel教程全在这里!按时更新……
- 试用期就破格升职加薪?这位95后做的excel图表遭曝光……