求助:将垂直布局表格转换为指定水平布局表格的实现方法
求助:将垂直布局表格转换为指定水平布局表格的实现方法
嘿,我懂你现在卡在哪了——数据透视表对这种非数值型的分组展示确实不太灵光,尤其是你想把同城市的公司名称、地址挨个并排列出来的需求。我给你两个实用的方案,亲测能解决问题:
方法一:Excel公式组合(适合小数据集)
假设你的原始数据在A1:C7区域(第一行是表头:City、Name、Address,下方是具体数据),按以下步骤操作:
- 提取唯一城市列表:在E2单元格输入公式
=UNIQUE(A2:A7),回车后就能得到去重后的City A、City B,向下拖动填充(如果有更多城市的话)。 - 生成目标表头:在F1单元格输入公式
=IF(COLUMN(A1)/2=INT(COLUMN(A1)/2),"Address_"&INT(COLUMN(A1)/2),"Name_"&ROUNDUP(COLUMN(A1)/2,0)),然后按住鼠标左键向右拖动,直到生成你需要的Name_1、Address_1、Name_2、Address_2等表头。 - 填充对应数据:在F2单元格输入公式
=IFERROR(INDEX($B$2:$B$7,SMALL(IF($A$2:$A$7=$E2,ROW($B$2:$B$7)-ROW($B$2)+1,""),COLUMN(A1))),"")。- 如果你用的是Excel 2019及更早版本,需要按
Ctrl+Shift+Enter触发数组公式;Excel 365/2021直接回车就行。 - 把F2单元格的公式向右拖动到对应列(比如I2),再向下拖动到E列对应的城市行,就能自动填充同城市下的所有公司名称和地址,空值会显示为空白。
- 如果你用的是Excel 2019及更早版本,需要按
方法二:Power Query(适合大数据量,更高效)
如果你的数据量比较大,公式法可能会卡顿,用Power Query能更高效地完成转换:
- 选中原始数据区域,点击Excel顶部的「数据」选项卡→「从表格/区域」,将数据导入Power Query编辑器(注意勾选“我的表格有标题”)。
- 按城市分组:选中
City列,点击「转换」选项卡→「分组依据」,设置:- 分组依据:
City - 新列名:
CompanyDetails - 操作:
所有行
点击确定后,每个城市会对应一个包含该城市所有公司数据的表格。
- 分组依据:
- 添加序号列:选中
CompanyDetails列,点击「添加列」→「自定义列」,输入公式=Table.AddIndexColumn([CompanyDetails],"序号",1,1),点击确定。 - 展开数据:点击自定义列右侧的展开箭头,选择
Name、Address、序号三个字段,展开后每个城市下的公司会带上1、2这样的序号。 - 透视生成Name列:选中
序号列,点击「转换」→「透视列」,设置:- 值列:
Name - 高级选项:不要聚合(因为我们要保留文本内容)
确定后会生成Name_1、Name_2这样的列。
- 值列:
- 透视生成Address列:回到Power Query编辑器的原始数据步骤(或者复制一份当前表格),重复步骤3-5,只是透视时值列选择
Address,生成Address_1、Address_2列。 - 合并表格:把透视后的Name表格和Address表格按
City列合并,最后点击「关闭并上载」,就能得到你想要的布局了。
备注:内容来源于stack exchange,提问作者Kerovin




