如何在Excel中将Status单列转多列并保留唯一ID及关联字段?
解决Excel中Status字段转置为多列并保留唯一ID的问题
方法一:Power Query(推荐大数据量场景)
这是处理大规模数据集最高效的方式,步骤如下:
- 选中原始数据区域,点击「数据」选项卡 → 「从表格/区域」(Excel 2016及以上版本),确认数据包含表头,进入Power Query编辑器
- 若同一
ID#对应的Location和Date有重复值,先选中这三列,右键选择「分组依据」:分组列选ID#,操作选「所有行」生成新列,再通过展开提取唯一的Location和Date - 选中
Status列,点击「转换」选项卡 → 「透视列」:值列选择Status(若只需标记状态是否存在,可先添加自定义列=1,再用该列作为值),高级选项选「不要聚合」(确保同一ID同一状态仅显示一次) - 点击确定后,所有Status类别会自动转为单独列,每行对应唯一
ID#,同时保留Location和Date - 点击「关闭并上载」,将结果导出到新工作表
方法二:公式法(适合中小数据量)
依赖Excel 365/2021的动态数组功能:
- 生成唯一ID列表:在空白列输入
=UNIQUE(A:A)(A列为原始ID列) - 提取Location:对应唯一ID行输入
=XLOOKUP($F2, $A:$A, $B:$B)(F列为唯一ID列,B列为原始Location列),下拉填充 - 提取Date:同理输入
=XLOOKUP($F2, $A:$A, $C:$C)(C列为原始Date列) - 生成Status列:以Status"A"为例,输入
=IF(COUNTIFS($A:$A, $F2, $D:$D, "A")>0, "A", "")(D列为原始Status列),复制公式到其他Status类别列并下拉
方法三:修正数据透视表操作
你之前的问题是未正确放置字段,调整后即可使用:
- 插入数据透视表,将
ID#、Location、Date全部拖到「行」区域(需确保同一ID#对应的Location和Date唯一,否则会生成多行) - 将
Status拖到「列」区域,再把Status拖到「值」区域,值字段设置为「计数」或「最大值」(按需显示状态内容或存在标记) - 最后将透视表中的空值替换为空白,即可得到目标格式
注:大数据量下优先选Power Query,公式法可能出现卡顿;透视表适合数据量适中且
Location/Date与ID#严格一一对应的场景
内容的提问来源于stack exchange,提问作者prina sikowitz
相关产品推荐
相关产品推荐

