【发布时间】:2019-06-27 14:21:01
【问题描述】:
我在电子表格中有多行设置如下:
TEST 1 Y N TEST_1 1234 Derived
TEST_2 56
我需要拆分有换行符的单元格,同时将剩余的单元格复制到新行中:
TEST 1 Y N TEST_1 1234 Derived
TEST 1 Y N TEST_2 56 Derived
我通过将换行符更改为逗号来测试代码(我不知道换行符的 VBA 符号)。我尝试的代码仅适用于 E 列,而不适用于 F 列:
Sub splitByCol()
Dim r As Range, i As Long, ar
Set r = Worksheets("Sheet1").Range("E999999:F999999").End(xlUp)
Do While r.row > 1
ar = Split(r.value, ",")
If UBound(ar) >= 0 Then r.value = ar(0)
For i = UBound(ar) To 1 Step -1
r.EntireRow.Copy
r.Offset(1).EntireRow.Insert
r.Offset(1).value = ar(i)
Next
Set r = r.Offset(-1)
Loop
End Sub
【问题讨论】:
-
@ArcherBird 单元格内的换行符(使用 Alt+Enter 创建)实际上是
vbLf,即Chr(10),但vbNewLine是Chr(13),与vbCr(而 Windows 中的换行符意味着vbCrLf)。 • TextToColumns 将不起作用,因为正如其名称所说,它将单元格拆分为 columns 而不是 OP 希望的行。 -
@ArcherBird 我尝试使用它,但它会覆盖右侧的数据。另外,我需要将数据放入另一行,而不是另一列。
-
@Pᴇʜ 我误解了 OP 的问题。但感谢
vbnewline的澄清。我学到了一些东西!