Excel如何将单列数据按以1为起始的规则拆分转换为多行
实现方法
方法1:辅助列+TEXTJOIN公式(Excel 2019及以上/365可用)
假设原始数据存放在A列,从A1单元格开始:
- 第一步:在B1单元格输入
1,B2单元格输入公式=IF(A2=1,B1+1,B1),下拉填充到所有数据行,作用是给不同分组打唯一标签 - 第二步:在C1单元格输入公式
=TEXTJOIN(" ",TRUE,IF($B$1:$B$8=ROW(),$A$1:$A$8,"")),如果是非365版本需要按Ctrl+Shift+Enter组合键回车生效,365版本直接回车即可,下拉公式直到输出空白行就完成
注:公式里的$B$1:$B$8、$A$1:$A$8可替换为你实际的辅助列、原始数据范围
方法2:Power Query法(适合批量处理,不需要记忆公式)
- 选中原始数据列,依次点击「数据」选项卡→「从表格/区域」,把数据导入Power Query编辑器
- 点击「添加列」→「自定义列」,输入公式
= if [列1] = 1 then [索引] else null,确认后对该自定义列选择「填充」→「向下」,得到每个分组的标识 - 选中分组标识列,点击「转换」→「分组依据」,设置:分组依据为刚得到的分组标识列,新列名自定义,操作选择「所有行」
- 再次新增自定义列,输入公式
= Text.Combine(List.Transform([新列名][列1], each Text.From(_))," "),替换公式里的「新列名」为上一步设置的列名 - 删除多余列,只保留最后生成的合并列,点击「关闭并上载」即可导出结果到Excel表格
方法3:VBA法(适合重复处理同类型需求)
按Alt+F11打开VBA编辑器,右键点击当前工作簿名称→「插入」→「模块」,粘贴以下代码后运行即可:
Sub 按1拆分合并行() Dim arr, res(), i As Long, k As Long '读取A列原始数据 arr = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row) ReDim res(1 To UBound(arr), 1 To 1) k = 0 For i = 1 To UBound(arr) If arr(i, 1) = 1 Then k = k + 1 res(k, 1) = arr(i, 1) & " " Else res(k, 1) = res(k, 1) & arr(i, 1) & " " End If Next '结果输出到C列 Range("C1").Resize(k) = res End Sub
内容的提问来源于stack exchange,提问作者gudi
相关产品推荐
相关产品推荐

