二维表中按条件提取产品清单

点击上方

蓝色

文字  关注我们吧!

送人玫瑰,手有余香,请将文章分享给更多朋友

动手操作是熟练掌握EXCEL的最快捷途径!

在实际的经济生活中,我们经常会遇到给客户报价的情形。一份设计合理的报价单通常能够准确地向客户提供产品价格信息。下图就是一个很好的例子。

上述表格是一个二维表格。有时候我们也想得到一份根据一定条件从这个二维表格中提取出来的一维表格,即符合某种条件的产品价格清单。

方法有很多种,这里我们只向大家介绍一下如何通过函数公式来完成。

01

首先我们给出条件。这里加上了最低价和最高价这两个限定条件。我们希望当给出最低价和最高价的限定条件后,在给定区间内的所有产品的价格都用黄色标示出来。如下图。

方法很简单,利用条件格式就可以完成。选定单元格区域B2:F11,在条件格式中输入“=AND(B2>=$I$2,B2<=$I$3)”,完成设定就可以了。

02

下面我们重点来介绍一下如何利用函数公式导出符合条件的所有产品的价格信息。

在单元格K2中输入“=IFERROR(INDEX($A$2:$A$11,SMALL(IF(($B$2:$F$11>=$I$2)*($B$2:$F$11<=$I$3),ROW($A$2:$A$11)),ROW(A1))-1),"")”,三键回车并向下拖曳即可。

这是一个经典的万金油公式的应用。关于万金油公式我们之前已经介绍很多期了,这里不做详细介绍了。如有兴趣的小伙伴们可以在我的公众号中搜索相关内容。

在单元格L2中输入“=IFERROR(INDIRECT(TEXT(RIGHT(SMALL(IF((($B$2:$F$11>=$I$2)*($B$2:$F$11<=$I$3)*($A$2:$A$11=K2)-COUNTIF($L$1:L1,$B$2:$F$11))>0,ROW($2:$11)/1%+COLUMN(B:F)*10001),ROW($A$1)),4),"r0c00"),),"")”,三键回车并向下拖曳即可。

在单元格M2中输入“=IFERROR(INDEX($A$1:$F$1,SUMPRODUCT(($A$2:$A$11=K2)*($B$2:$F$11=L2)*(COLUMN(B:F)))),"")”并向下拖曳即可。

由于这部分公式也比较简单,我们也不做过多的介绍了。

下面我们着重对L列的公式进行解析分析。

思路:

  • IF((($B$2:$F$11>=$I$2)*($B$2:$F$11<=$I$3)*($A$2:$A$11=K2)-COUNTIF($L$1:L1,$B$2:$F$11))>0,ROW($2:$11)/1%+COLUMN(B:F)*10001)部分,这是一个IF条件判断。我们先说说后半部分当条件为真实返回的结果ROW($2:$11)/1%+COLUMN(B:F)*10001。当条件为真时,将数据区域对应的行号扩大100倍,对应列号扩大10001倍,并将两部分的结果相加

  • IF函数的条件部分,($B$2:$F$11>=$I$2)*($B$2:$F$11<=$I$3)*($A$2:$A$11=K2)给出需要满足的条件。COUNTIF($L$1:L1,$B$2:$F$11)部分的作用是用来剔除已经在L列出先的数据。最后对整个条件部分做大于零的判断

  • 利用SMALL函数来提取最小值。前面讲行号扩大100倍,列号扩大10001倍,这样做后从小到大顺序是先纵向方向(列),再横向方向(行)。当限定了产品这个条件后,从小到大的提取顺序就是每行中从左向右依次提取

  • 利用RIGHT函数提取右侧4为字符,截取的内容实际上就是行号和列号的信息。这时可以返回头去想一下列号扩大10001倍的妙处

  • 利用TEXT函数将上述4位字符转换为R1C1的形式

  • 利用INDIRECT函数提取对应位置下的数据

小伙伴们,你们理解了吗?

-END-

长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助

推荐阅读:

IF函数七兄弟,个个本领大!

一对多查询经典函数组合拓展应用--多对多查询

来,平均一下!

总结篇--反向查找函数使用终极帖

遇到不规范的数据录入,你该怎么办?

戳原文,更有料!免费模板文档!

(0)

相关推荐