使用VLOOKUP实现用户对应所有客户的去重合并展示需求
问题说明
我有一份电子表格,其中一列是用户信息,另一列记录了各用户对应的客户。需要生成新表格,将每个用户单独放在一行,其对应的所有客户去重后合并为同一单元格(以逗号分隔)。
实际表格
| User | Client |
|---|---|
| UserA | ClientA |
| UserA | ClientA |
| UserB | ClientA |
| UserC | ClientA |
| UserA | ClientB |
| UserB | ClientC |
| UserC | ClientB |
| UserA | ClientC |
期望表格
| User | Client |
|---|---|
| UserA | ClientA, ClientB, ClientC |
| UserB | ClientA, ClientC |
| UserC | ClientA, ClientB |
解法汇总
一、Excel 实现方法
方法1:函数组合(适用于Excel 365/2021及以上版本)
在新表格的B2单元格输入以下公式,下拉填充即可:
=TEXTJOIN(", ", TRUE, UNIQUE(FILTER(原表格!$B$2:$B$9, 原表格!$A$2:$A$9=A2)))
- 逻辑说明:
FILTER:筛选出当前用户对应的所有客户UNIQUE:对筛选结果去重TEXTJOIN:把去重后的客户用「逗号+空格」连接成字符串
方法2:Power Query工具(全版本Excel通用)
- 选中原表格数据,点击「数据」选项卡 →「从表格/区域」,导入Power Query编辑器
- 在编辑器中操作:
- 点击「转换」选项卡 →「分组依据」
- 分组列选择「User」,新列名设为「Client」,操作选择「所有行」,点击确定
- 添加自定义列,输入公式:
= Text.Combine(List.Distinct([All Rows][Client]), ", ") - 删除「All Rows」列,点击「关闭并上载」,即可得到目标表格
二、Google Sheets 实现方法
在新表格的B2单元格输入以下公式,下拉填充:
=TEXTJOIN(", ", TRUE, UNIQUE(FILTER(原表格!B:B, 原表格!A:A=A2)))
逻辑与Excel函数版完全一致,Google Sheets原生支持该组合用法。
三、Python pandas 代码实现
如果用代码批量处理,可借助pandas快速完成:
import pandas as pd # 读取原数据(支持csv/excel格式) df = pd.read_excel("your_source_file.xlsx") # 若为csv则用pd.read_csv() # 分组、去重、合并客户列 result_df = df.groupby("User")["Client"].apply(lambda x: ", ".join(x.unique())).reset_index() # 保存结果 result_df.to_excel("merged_result.xlsx", index=False) # 保存为csv则用to_csv()
内容的提问来源于stack exchange,提问作者Sudhik
相关产品推荐
相关产品推荐

