You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Excel跨行列表格格式转换?Index-Match与SUMIFS尝试失败

解决Excel宽表转长表(多字段拆分)问题

针对你提到的宽表(含Year/Country/Category/Month/Export/Import)转长表(Year/Month/Partner/Category/Type/Value)的需求,以下是三种实用解决方案:

方法一:Power Query(推荐,无公式)

这是最简便的批量转换方式,无需复杂函数:

  • 选中源数据区域,点击「数据」选项卡 → 「从表格/区域」(Excel 2016+;旧版找「Power Query」选项卡)
  • 在Power Query编辑器中,选中Export、Import两列,点击「转换」→「逆透视列」→「逆透视仅选中列」
  • 将自动生成的「属性」列重命名为Type,「值」列重命名为Value
  • 把「Country」列重命名为Partner
  • 调整列顺序为Year → Month → Partner → Category → Type → Value
  • 点击「关闭并上载」,直接得到目标长表

方法二:数组公式(适合不使用Power Query的场景)

假设源表数据在A1:F100(A=Year、B=Country、C=Category、D=Month、E=Export、F=Import),目标表从H1开始:

  1. 先手动输入目标表头:H1=Year、I1=Month、J1=Partner、K1=Category、L1=Type、M1=Value
  2. 在H2输入数组公式(按Ctrl+Shift+Enter确认,不能直接回车):
    =INDEX($A$2:$A$100, INT((ROW()-2)/2)+1)
    
  3. I2公式:
    =INDEX($D$2:$D$100, INT((ROW()-2)/2)+1)
    
  4. J2公式:
    =INDEX($B$2:$B$100, INT((ROW()-2)/2)+1)
    
  5. K2公式:
    =INDEX($C$2:$C$100, INT((ROW()-2)/2)+1)
    
  6. L2公式:
    =INDEX({"Export","Import"}, MOD(ROW()-2,2)+1)
    
  7. M2公式:
    =INDEX($E$2:$F$100, INT((ROW()-2)/2)+1, MOD(ROW()-2,2)+1)
    
  8. 选中H2:M2,下拉填充到出现错误值为止,即可完成转换。

方法三:VBA宏(适合重复批量处理)

如果需要频繁做这类转换,写个宏一键搞定:
按Alt+F11打开VBA编辑器,插入模块,粘贴以下代码(记得替换源表名称):

Sub WideToLong()
    Dim srcWs As Worksheet, destWs As Worksheet
    Dim srcLastRow As Long, destRow As Long
    Dim i As Long
    
    Set srcWs = ThisWorkbook.Sheets("源表") '替换为你的源表实际名称
    Set destWs = ThisWorkbook.Sheets.Add
    destWs.Name = "目标表"
    
    '写入目标表头
    destWs.Range("A1:F1") = Array("Year", "Month", "Partner", "Category", "Type", "Value")
    destRow = 2
    
    srcLastRow = srcWs.Cells(srcWs.Rows.Count, "A").End(xlUp).Row
    
    '遍历源表每行,拆分Export/Import为两行
    For i = 2 To srcLastRow
        'Export行
        destWs.Cells(destRow, "A") = srcWs.Cells(i, "A")
        destWs.Cells(destRow, "B") = srcWs.Cells(i, "D")
        destWs.Cells(destRow, "C") = srcWs.Cells(i, "B")
        destWs.Cells(destRow, "D") = srcWs.Cells(i, "C")
        destWs.Cells(destRow, "E") = "Export"
        destWs.Cells(destRow, "F") = srcWs.Cells(i, "E")
        destRow = destRow + 1
        
        'Import行
        destWs.Cells(destRow, "A") = srcWs.Cells(i, "A")
        destWs.Cells(destRow, "B") = srcWs.Cells(i, "D")
        destWs.Cells(destRow, "C") = srcWs.Cells(i, "B")
        destWs.Cells(destRow, "D") = srcWs.Cells(i, "C")
        destWs.Cells(destRow, "E") = "Import"
        destWs.Cells(destRow, "F") = srcWs.Cells(i, "F")
        destRow = destRow + 1
    Next i
End Sub

运行宏后,会自动生成包含目标结构的新工作表。

内容的提问来源于stack exchange,提问作者Meh Mech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 20:22:49