Excel中根据cust_id统一Customer_since列(保留最早首次购买年份)
解决Excel中统一客户首次购买年份的问题
针对你需要为同一客户统一最早首次购买年份的需求,以下是三种高效的批量处理方法:
方法一:数组公式(适配Excel 2019及更早版本)
假设你的cust_id在A列,Customer_since在B列,数据范围是A2:A7001、B2:B7001:
- 在空白列(比如C列)的C2单元格输入公式:
=MIN(IF($A$2:$A$7001=A2,$B$2:$B$7001)) - 输入完成后按Ctrl+Shift+Enter(触发数组公式计算),再下拉填充整列
- 公式逻辑:针对当前行的客户ID,筛选所有相同ID对应的购买年份,取最小值(即最早年份)
方法二:MINIFS函数(适配Excel 365/2021版本)
该方法无需数组操作,更简洁:
- 在空白列C2单元格输入:
=MINIFS($B:$B,$A:$A,A2) - 直接回车后下拉填充整列即可
- 若想先建立客户-最早年份的映射表,再匹配:
- 在E列生成唯一客户ID:
=UNIQUE(A:A) - F列对应生成最早年份:
=MINIFS(B:B,A:A,E2) - C列用匹配函数关联:
=XLOOKUP(A2,E:E,F:F)
- 在E列生成唯一客户ID:
方法三:Power Query(批量处理无公式残留)
适合需要一次性完成数据清洗,且后续可能重复处理的场景:
- 选中数据区域,点击数据选项卡 → 从表格/区域(自动将数据转为Excel表格)
- 在Power Query编辑器中,选中
cust_id列,点击转换选项卡 → 分组依据 - 分组设置:
- 分组依据:
cust_id - 新列名:
最早购买年份 - 操作:
最小值 - 列:
Customer_since
- 分组依据:
- 点击确定后,得到每个客户的最早年份;再点击合并查询 → 合并查询作为新查询
- 选择原数据表和分组后的表,匹配列选
cust_id,合并类型选左外部 - 展开合并后的列,仅保留
最早购买年份,删除原Customer_since列并重命名新列为Customer_since - 点击关闭并上载,将处理后的数据导入Excel
内容的提问来源于stack exchange,提问作者Hena
相关产品推荐
相关产品推荐

