真头疼:有条件的提取不重复值!

下表展示的是某公司的进货明细表,当指定商品后,需要提取出其对应的不重复品牌,效果如动图所示。F3设置了数据验证,G列是不重复品牌的结果。该如何做呢?

如果用函数的方法想不出来,也可以想一下用基础操作该如何完成。可以用下面两种方法,都以空调为例进行说明演示。

第1种,先筛选出空调的记录,然后对其品牌去重。
第2种,先对商品和品牌两列同时去重,然后再筛选出空调对应的品牌。
其实今天讲的函数思路和基础操作的第2种方法类似,在G3单元格输入下面的公式,按ctrl+shift+enter,向下填充。

=INDEX(B:B,SMALL(IF((MATCH(A$3:A$18&B$3:B$18,A$3:A$18&B$3:B$18,)=ROW($1:$16))*(A$3:A$18=F$3),ROW($3:$18),4^8),ROW(A1)))&""

MATCH(A$3:A$18&B$3:B$18,A$3:A$18&B$3:B$18,)=ROW($1:$16)这部分将两列合成一列,然后去重。当然它不是像基础操作那样直接把重复的去掉了,而是把合并后第1次出现的返回true,重复出现的返回false。

结果如下图E列所示。比如第4行的记录是第2次出现,所以对应的结果是false。

(MATCH(A$3:A$18&B$3:B$18,A$3:A$18&B$3:B$18,)=ROW($1:$16))*(A$3:A$18=F$3)这部分是在上一步的基础上又增加了一个“A 列的商品等于空调”的条件。

那么同时满足“A列的商品是空调且对应的品牌是第1次出现“的记录返回1,否则返回0,结果如下图E列所示。这样就找到了我们需要的记录。

接下来用if函数判断,让条件满足的记录返回对应的行号,条件不满足的记录返回4^8。然后用small函数从小到大依次提取满足条件的行号,最后用index返回B列相应行的品牌。这些都说过好多次了,不再一一演示。

最后我想说的是,用函数想不出的时候,可以想想用基础操作来完成,有时,它们的思路是想通的。

链接:

https://pan.baidu.com/s/1R7JmR3jh6hzQf7RYteLQIQ

提取码:ky2j
(0)

相关推荐