如何在Excel中基于某列值合并多行数据?
合并重复行的非空列数据(Excel/Python实现方案)
一、Excel实现方案(适配4000唯一值+30列的规模)
方法1:Power Query(推荐,高效易操作)
针对你的数据量级,Power Query是最省心的选择,步骤如下:
- 选中数据区域,点击「数据」选项卡 → 「从表格/区域」(旧版Excel选「自表格」),确认弹窗中「我的表格有标题」已勾选,进入Power Query编辑器。
- 选中第一列(即含Dog/Cat的列),点击「转换」选项卡 → 「分组依据」,切换到「高级」模式。
- 配置分组规则:
- 「分组依据」选择第一列的列名(比如“动物”)
- 点击「添加」,为每一列(A到F)设置聚合规则:
- 「新列名」填对应列名(如A、B)
- 「操作」选择「最大值」(文本类型的MAX会自动忽略空值,保留唯一非空值)
- 点击「确定」生成合并后的表格,最后点击「关闭并上载」,将结果导入Excel工作表。
方法2:公式法(适合临时快速处理)
假设原始数据在A2:F7,第一列为A列,在空白区域生成结果:
- 提取唯一值:在
H2输入公式=UNIQUE(A2:A7),下拉得到所有唯一分组值(Dog、Cat)。 - 提取对应列的非空值:以
I2(对应原A列)为例,输入公式:
Excel 365直接回车即可,旧版需按=TEXTJOIN("",TRUE,IF($A$2:$A$7=H2,$B$2:$B$7,""))Ctrl+Shift+Enter作为数组公式,之后横向、下拉填充到所有列。该公式会自动拼接当前分组下该列的所有非空值,适配你数据中每列仅一个非空值的场景。
二、Python实现方案(适合复杂逻辑扩展)
如果后续需要调整处理逻辑,用Pandas可以快速完成:
import pandas as pd # 读取Excel数据 df = pd.read_excel("你的数据文件路径.xlsx") # 按第一列分组,聚合时保留每列非空值(max忽略空值,适配单非空场景) merged_df = df.groupby(df.columns[0], as_index=False).max() # 若某列存在多个非空值需要拼接,替换为以下聚合逻辑: # merged_df = df.groupby(df.columns[0], as_index=False).agg(lambda x: ", ".join(x.dropna().unique())) # 保存结果到新Excel文件 merged_df.to_excel("合并结果.xlsx", index=False)
内容的提问来源于stack exchange,提问作者thomaswerk_94
相关产品推荐
相关产品推荐

