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

求助:将垂直布局表格转换为指定水平布局表格的实现方法

求助:将垂直布局表格转换为指定水平布局表格的实现方法

嘿,我懂你现在卡在哪了——数据透视表对这种非数值型的分组展示确实不太灵光,尤其是你想把同城市的公司名称、地址挨个并排列出来的需求。我给你两个实用的方案,亲测能解决问题:

方法一: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列对应的城市行,就能自动填充同城市下的所有公司名称和地址,空值会显示为空白。

方法二:Power Query(适合大数据量,更高效)

如果你的数据量比较大,公式法可能会卡顿,用Power Query能更高效地完成转换:

  1. 选中原始数据区域,点击Excel顶部的「数据」选项卡→「从表格/区域」,将数据导入Power Query编辑器(注意勾选“我的表格有标题”)。
  2. 按城市分组:选中City列,点击「转换」选项卡→「分组依据」,设置:
    • 分组依据:City
    • 新列名:CompanyDetails
    • 操作:所有行
      点击确定后,每个城市会对应一个包含该城市所有公司数据的表格。
  3. 添加序号列:选中CompanyDetails列,点击「添加列」→「自定义列」,输入公式 =Table.AddIndexColumn([CompanyDetails],"序号",1,1),点击确定。
  4. 展开数据:点击自定义列右侧的展开箭头,选择NameAddress序号三个字段,展开后每个城市下的公司会带上1、2这样的序号。
  5. 透视生成Name列:选中序号列,点击「转换」→「透视列」,设置:
    • 值列:Name
    • 高级选项:不要聚合(因为我们要保留文本内容)
      确定后会生成Name_1Name_2这样的列。
  6. 透视生成Address列:回到Power Query编辑器的原始数据步骤(或者复制一份当前表格),重复步骤3-5,只是透视时值列选择Address,生成Address_1Address_2列。
  7. 合并表格:把透视后的Name表格和Address表格按City列合并,最后点击「关闭并上载」,就能得到你想要的布局了。

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

火山引擎 最新活动