如何将符合条件的多行数据中的值放到一个单元格里面
我们先来看一下本次要实现的效果:
原始数据
结果如下:
实现效果
下面,我们就来给大家讲解如何实现以上的效果。本次需要用到的函数为IF、COUNTIF、VLOOKUP三个。按照惯例,我们先来讲解一下函数的基本用法。
一、 IF函数
语法:
=IF(logical_test,value_if_true,value_if_false)
参数解释:
Logical_test:计算结果为 TRUE 或 FALSE 的任意值或表达式。
Value_if_true:当 logical_test 为 TRUE 时返回的值。
Value_if_false:当ogical_test 为 FALSE 时返回的值。
二、 COUNTIF函数
语法:
= COUNTIF(range,criteria)
参数解释:
Range:要计算其中非空单元格数目的区域。
Criteria:以数字、表达式或文本形式定义的条件。
三、 VLOOKUP函数
语法:
=VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
参数解释:
lookup_value:要查找的值,可以是数值、引用或文本字符串。
table_array:要查找的区域,类型为数据表区域。
col_index_num:返回数据在查找区域的第几列数,必须为正整数。
range_lookup:模糊匹配(TRUE)或精确匹配(FALSE或不填)。
四、案例的实现
要实现本案例,需要在D列添加一个辅助列。通过辅助列,从后往前理解,将本列和本列下面和本列户编号相同的一个列的值合并起来,依次次循环就能将所有户编号相同的列的值合并到第一次出现该户编号的列。辅助列D2的公式为:
=C2&IF(COUNTIF(B3:B$23,B2),"、"&VLOOKUP(B2,B3:$D$23,3,FALSE),"")
添加辅助列结果
特别提醒:注意本公式中在countif和vlookup函数中,均需要将区域延伸到有值的后一行(如本表格共22行,而区域我们需要延伸到23行),否则会导致结果错误,同时要注意公式中的混合引用,确保公式往下填充的时候的正确性。
建立好辅助列并计算好以后,我们需要在右侧的位置提取出不重复的户编号,然后再次通过VLOOKUP函数查询出户编号的人员。
提取出不重复的户编号的方法可以使用【数据】选项卡下面的【数据工具】组里面的【删除重复值】按钮实现。我们先将B列的户编号复制到G列,然后使用【删除重复值】将重复的值删除,得到不重复的户编号。
删除重复值操作
得到的结果如下:
最终结果空表
在H列通过VLOOKUP函数查询出户编号第一次出现的位置,就得到了该户编号对应的所有人员。公式如下:
=VLOOKUP(G2,$B$2:$D$23,3,FALSE)
结果如下:
最终结果