Excel基于指定列合并重复行,Power Query方法遇列值异常求助
Excel合并相同分组行并填充对应列值
原始数据
| column1 | column2 | column3 | column4 | column5 | column6 | column7 | column8 | column9 | column10 |
|---|---|---|---|---|---|---|---|---|---|
| Greater Country1 | DataColumn | massWeight | ColumnNameSame | ItemColumn | xyz | state | 1 | ||
| See Data | DataColumn | massWeight | ColumnNameSame | ItemColumn | xyz | state | 2 | ||
| Greater Country1 | DataColumn | massWeight | ColumnNameSame | ItemColumn | xyz | state | 3 | ||
| See Data | DataColumn | massWeight | ColumnNameSame | ItemColumn | xyz | state | 4 | ||
| Greater Country1 | DataColumn | massWeight | ColumnNameSame | ItemColumn | Type AB | ||||
| See Data | DataColumn | massWeight | ColumnNameSame | ItemColumn | Type AB | ||||
| Greater Country1 | DataColumn | massWeight | ColumnNameSame | ItemColumn | Type AB | ||||
| See Data | DataColumn | massWeight | ColumnNameSame | ItemColumn | Type AB | ||||
| Alpha | DataColumn | massWeight | DIFFERENT COLUMN ITEM | ItemColumn | xyz | state | 11 | ||
| AlphBetaa | DataColumn | massWeight | VERY DIFFERENT COLUMN ITEM | ItemColumn | Type AB | A | state | 12 |
需求
按column1、column2、column3、column5、column9分组,合并每组内column6、column7、column8的非空值;前8行需合并为4行,第9、10行作为独立条目保留。
已尝试方法
- 使用VLOOKUP、MERGE、CONCAT创建主键合并,未匹配到所有行
- Power Query处理时,
column10结果异常(值不正确)
期望结果
| column1 | column2 | column3 | column4 | column5 | column6 | column7 | column8 | column9 | column10 |
|---|---|---|---|---|---|---|---|---|---|
| Greater Country1 | DataColumn | massWeight | ColumnNameSame | ItemColumn | xyz | Type AB | state | 1 | |
| See Data | DataColumn | massWeight | ColumnNameSame | ItemColumn | xyz | Type AB | state | 2 | |
| Greater Country1 | DataColumn | massWeight | ColumnNameSame | ItemColumn | xyz | Type AB | state | 3 | |
| See Data | DataColumn | massWeight | ColumnNameSame | ItemColumn | xyz | Type AB | 4 | ||
| Alpha | DataColumn | massWeight | DIFFERENT COLUMN ITEM | ItemColumn | xyz | state | 11 | ||
| AlphBetaa | DataColumn | massWeight | VERY DIFFERENT COLUMN ITEM | ItemColumn | Type AB | A | state | 12 |
解决方法
方法一:Power Query 修正方案
- 导入数据到Power Query:选中数据区域 → 「数据」选项卡 → 「从表格/区域」(勾选「我的表格有标题」)
- 填充空值:
- 选中
column1、column2、column3、column5、column9列 → 「转换」选项卡 → 「填充」→ 「向下填充」 - 这一步解决分组时空值无法匹配的问题,保证同组行的分组列值一致
- 选中
- 分组聚合:
- 点击「开始」选项卡 → 「分组依据」
- 分组列选择
column1、column2、column3、column5、column9 - 添加以下聚合列:
新列名 操作 列 column4 最大值 column4 column6 最大值 column6 column7 最大值 column7 column8 最大值 column8 column10 最大值 column10 - 点击「确定」
- 加载结果:点击「主页」选项卡 → 「关闭并上载」,将处理后的数据加载回Excel。
说明:之前
column10异常是因为分组时误选了错误的聚合方式(如计数、求和),用「最大值」可自动保留同组内的非空有效数值。
方法二:公式+辅助列方案
如果不想使用Power Query,可通过辅助列+XLOOKUP实现:
- 添加分组键辅助列:
在表格右侧插入新列GroupKey,输入公式:
该公式将分组列的值拼接成唯一键,处理=CONCAT([@column1],[@column2],[@column3],[@column5],IF(ISBLANK([@column9]),"",[@column9]))column9的空值避免分组错误。 - 提取唯一分组键:
复制GroupKey列到空白区域,选中复制的区域 → 「数据」选项卡 → 「删除重复值」,得到所有唯一分组。 - 提取各列值:
对每个唯一分组键,用XLOOKUP提取对应列的非空值:column1:=XLOOKUP($G2,Table1[GroupKey],Table1[column1])column6:=XLOOKUP($G2,Table1[GroupKey],Table1[column6],"",0,1)(1表示查找第一个非空值)column7:=XLOOKUP($G2,Table1[GroupKey],Table1[column7],"",0,-1)(-1表示查找最后一个非空值,确保取到Type AB)column10:=XLOOKUP($G2,Table1[GroupKey],Table1[column10],"",0,1)
填充公式后即可得到符合要求的结果。
内容的提问来源于stack exchange,提问作者user12063090
相关产品推荐
相关产品推荐

