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

如何将Excel单行多键值对转置为多行?

Excel 拆分数据行实用方法

方法1:Power Query(推荐,无需代码)

操作步骤:

  • 选中你的数据区域,点击顶部「数据」选项卡,选择「从表格/区域」(Excel 2016及以后版本支持),根据数据情况确认是否勾选「我的表格有标题」,进入Power Query编辑器
  • 在编辑器里,选中第一列(带序号的列),按住Ctrl选中后面所有包含内容的列
  • 点击「转换」选项卡,选择「逆透视列」→「逆透视其他列」
  • 此时会多出「属性」列,直接删掉这列,只保留序号列和「值」列
  • 点击「关闭并上载」,拆分好的数据就会出现在新工作表里

方法2:公式+辅助列(适配低版本Excel)

假设原始数据在A1:C3区域:

  1. 计算每行需要拆分的条目数:在D1单元格输入=COUNTA(B1:C1),下拉填充到D3
  2. 生成重复的序号列:在E1输入=IF(ROW(A1)<=SUM($D$1:$D$1),$A$1,IF(ROW(A1)<=SUM($D$1:$D$2),$A$2,$A$3)),一直下拉直到单元格出现错误,然后删掉错误行
  3. 匹配对应的值:在F1输入=INDEX($B$1:$C$3,MATCH(E1,$A$1:$A$3,0),COUNTIF($E$1:E1,E1)),下拉填充,最后把E:F列复制粘贴为数值即可

方法3:VBA批量处理

按Alt+F11打开VBA编辑器,插入一个新模块,粘贴以下代码:

Sub SplitRows()
    Dim rng As Range
    Dim i As Integer, j As Integer, k As Integer
    Set rng = Range("A1:C3") '把这里改成你的实际数据区域
    k = 1
    For i = 1 To rng.Rows.Count
        For j = 2 To rng.Columns.Count
            If rng.Cells(i, j).Value <> "" Then
                Cells(k, 5).Value = rng.Cells(i, 1).Value
                Cells(k, 6).Value = rng.Cells(i, j).Value
                k = k + 1
            End If
        Next j
    Next i
End Sub

运行代码后,拆分结果会输出到E:F列,可自行调整代码里的输出列位置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:32:19