如何将单个单元格拆分为多行并添加另一行
How to Split a single cell into multiple rows and add another row
我有一个有两列的 table。日期和测试名称。
我想要发生的是将一个单元格中的文本字符串分成多行。此外,我需要将日期与每组文本相关联。我试过文本到列然后转置,但它一次只能处理一组字符串,而不是整个数据集。
这需要一些复制和粘贴操作,还需要使用 WORD,但这里有几个步骤应该可以帮助您。
- 复制有问题的单元格。
- 打开 Word
- 选择性粘贴(使用粘贴图标下方的下拉箭头)
- Select 选项 - 未格式化的 Unicode 文本(作为您的特殊粘贴选项)
- Select 全部
- 替换
- 查找内容:(输入 space)替换为:^p(创建新行)
- 将结果复制并粘贴回 excel
遍历 A 列然后遍历它旁边的字符串。
结果将在 D 列中
Sub ChickatAH()
Dim rng As Range, Lstrw As Long, c As Range
Dim SpltRng As Range
Dim i As Integer
Dim Orig As Variant
Dim txt As String
Lstrw = Cells(Rows.Count, "A").End(xlUp).Row
Set rng = Range("A2:A" & Lstrw)
For Each c In rng.Cells
Set SpltRng = c.Offset(, 1)
txt = SpltRng.Value
Orig = Split(txt, " ")
For i = 0 To UBound(Orig)
Cells(Rows.Count, "D").End(xlUp).Offset(1) = c
Cells(Rows.Count, "D").End(xlUp).Offset(, 1) = Orig(i)
Next i
Next c
End Sub
公式解决方案接近您的要求。
单元格 H1
是分隔符。在这种情况下 space.
Helper E1:=SUM(E1,LEN(B1)-LEN(SUBSTITUTE(B1,$H,"")))+1
以上公式你必须多填一行
A8:=a1
把这个公式填到右边。
A9:=LOOKUP(ROW(1:1),$E:$E,A:A)
将此公式向右填写,然后向下填写。
B9:=MID($H&LOOKUP(ROW(A1),E:E,B:B)&$H,FIND("艹",SUBSTITUTE($H&LOOKUP(ROW(A1),E:E,B:B)&$H,$H,"艹",ROW(A2)-LOOKUP(ROW(A1),E:E)))+1,FIND("艹",SUBSTITUTE($H&LOOKUP(ROW(A1),E:E,B:B)&$H,$H,"艹",ROW(A2)-LOOKUP(ROW(A1),E:E)+1))-FIND("艹",SUBSTITUTE($H&LOOKUP(ROW(A1),E:E,B:B)&$H,$H,"艹",ROW(A2)-LOOKUP(ROW(A1),E:E)))-1)
往下填。
错误:
Date/time会转为数值,空白处补0。可以在A9
和B9
的公式末尾加上&""来屏蔽值为 0,但 numbers/date/time 将被转换为文本。
我有一个有两列的 table。日期和测试名称。 我想要发生的是将一个单元格中的文本字符串分成多行。此外,我需要将日期与每组文本相关联。我试过文本到列然后转置,但它一次只能处理一组字符串,而不是整个数据集。
这需要一些复制和粘贴操作,还需要使用 WORD,但这里有几个步骤应该可以帮助您。
- 复制有问题的单元格。
- 打开 Word
- 选择性粘贴(使用粘贴图标下方的下拉箭头)
- Select 选项 - 未格式化的 Unicode 文本(作为您的特殊粘贴选项)
- Select 全部
- 替换
- 查找内容:(输入 space)替换为:^p(创建新行)
- 将结果复制并粘贴回 excel
遍历 A 列然后遍历它旁边的字符串。
结果将在 D 列中
Sub ChickatAH()
Dim rng As Range, Lstrw As Long, c As Range
Dim SpltRng As Range
Dim i As Integer
Dim Orig As Variant
Dim txt As String
Lstrw = Cells(Rows.Count, "A").End(xlUp).Row
Set rng = Range("A2:A" & Lstrw)
For Each c In rng.Cells
Set SpltRng = c.Offset(, 1)
txt = SpltRng.Value
Orig = Split(txt, " ")
For i = 0 To UBound(Orig)
Cells(Rows.Count, "D").End(xlUp).Offset(1) = c
Cells(Rows.Count, "D").End(xlUp).Offset(, 1) = Orig(i)
Next i
Next c
End Sub
公式解决方案接近您的要求。
单元格 H1
是分隔符。在这种情况下 space.
Helper E1:=SUM(E1,LEN(B1)-LEN(SUBSTITUTE(B1,$H,"")))+1
以上公式你必须多填一行
A8:=a1
把这个公式填到右边。
A9:=LOOKUP(ROW(1:1),$E:$E,A:A)
将此公式向右填写,然后向下填写。
B9:=MID($H&LOOKUP(ROW(A1),E:E,B:B)&$H,FIND("艹",SUBSTITUTE($H&LOOKUP(ROW(A1),E:E,B:B)&$H,$H,"艹",ROW(A2)-LOOKUP(ROW(A1),E:E)))+1,FIND("艹",SUBSTITUTE($H&LOOKUP(ROW(A1),E:E,B:B)&$H,$H,"艹",ROW(A2)-LOOKUP(ROW(A1),E:E)+1))-FIND("艹",SUBSTITUTE($H&LOOKUP(ROW(A1),E:E,B:B)&$H,$H,"艹",ROW(A2)-LOOKUP(ROW(A1),E:E)))-1)
往下填。
错误:
Date/time会转为数值,空白处补0。可以在A9
和B9
的公式末尾加上&""来屏蔽值为 0,但 numbers/date/time 将被转换为文本。