You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel表格重构:如何将多行列数据转换为宽表格式?

Excel表格重构:如何将多行列数据转换为宽表格式?

嘿,我来帮你搞定这个表格重构的问题!你想要把那种按Day、TimeOfDay、Color拆分的长表,转成每个Day+TimeOfDay组合对应不同Color的Foo值的宽表,对吧?之前用数据透视表遇到了行字段合并的问题,我给你几个简单靠谱的办法:

方法一:用Power Query(最省心推荐)

这是Excel里处理这类表格转换最便捷的方式,一步到位还能重复使用:

  • 选中你的原始数据区域(包括表头),点击「数据」选项卡,选择「从表格/区域」(Excel 2016及以后版本自带,旧版本可以安装Power Query插件)
  • 进入Power Query编辑器后,选中「Color」和「Foo」这两列,点击「转换」选项卡的「透视列」
  • 在弹出的设置窗口里,「值列」选择「Foo」,确认即可(如果存在重复的Day+TimeOfDay+Color组合,选求和/平均值都可以,你的数据看起来是唯一的,结果没差别)
  • 最后点击「关闭并上载」,Excel会自动生成一个新工作表,里面就是你要的格式:Day、TimeOfDay各占独立列,GreenFoo、BlueFoo等列对应数值,完全没有合并行的问题!

方法二:调整数据透视表设置(延续你之前的思路)

如果你还是想用数据透视表,只要改个设置就能解决行字段合并的问题:

  • 先按你之前的步骤做好数据透视表(Day和TimeOfDay作为行字段,Color作为列字段,Foo作为值字段)
  • 右键点击行区域里的「Day」字段,选择「字段设置」,切换到「布局和打印」选项卡,取消勾选「压缩表单」(不同版本可能叫「以压缩形式显示」),同时勾选「重复所有项目标签」
  • 对「TimeOfDay」字段做同样的设置
  • 最后关掉所有总计、行总计,把透视表里的数据复制粘贴成值,就能得到普通的目标表格了

方法三:用INDEX+MATCH公式组合(手动公式方案)

要是你不想用工具,手动写公式也能实现:
假设原始数据在A:D列(表头在第1行),新表表头设为Day(F1)、TimeOfDay(G1)、GreenFoo(H1)、BlueFoo(I1):

  • 先提取唯一的Day+TimeOfDay组合:选中A:B列,点击「数据」选项卡的「删除重复项」,得到唯一组合后复制到F2:G区域
  • 在H2单元格输入公式:=INDEX($D:$D,MATCH(1,($A:$A=F2)*($B:$B=G2)*($C:$C="Green"),0)),Excel 365直接回车,旧版本按Ctrl+Shift+Enter触发数组公式
  • 把H2的公式复制到I2,把公式里的"Green"改成"Blue",然后下拉填充所有行,就能得到对应Color的Foo值了

备注:内容来源于stack exchange,提问作者einpoklum

火山引擎 最新活动