我想将选择(B3,B4..etc)分成新行..请帮助我。 例如=如果我选择B3单元格,我想添加更多3行,第2行到第4行应该向下移动。每个单元格中的换行符始终不一样。
答案 0 :(得分:3)
使用excel-vba函数Split将单元格拆分为字符串数组很简单。
如果单元格A1
包含一个包含Chr(10)
(LF
/换行字符)的字符串,那么您可以将其拆分为一个包含VBA的数组:
Dim myArr() as String
myArr = Split(Range("A1"), Chr(10))
...然后你可以将它转储到一系列单元格水平(在UBound
的帮助下),如下所示:
Dim startColumn As Integer
startColumn = 2
Range(Cells(1, startColumn), Cells(1, startColumn + UBound(myArr))) = myArr()
...或者您可以将其转储到垂直的一系列单元格中,如下所示:
Dim startRow As Integer, x As Integer
startRow = 2
For x = 0 To UBound(myArr)
Range("A" & x + startRow) = myArr(x)
Next x
您还没有分享到目前为止您尝试过的代码,但我相信您应该可以使用Range.Insert
处理“插入行”部分,或者快速使用Google搜索(如果您没有我已经知道了。
答案 1 :(得分:1)
使用split函数和variant数组。
Sub test()
Dim vSplit
Dim vDB, vR()
Dim i As Long, n As Long, j As Integer
vDB = Range("a1").CurrentRegion
For i = 1 To UBound(vDB, 1)
vSplit = Split(vDB(i, 2), Chr(10))
For j = 0 To UBound(vSplit)
n = n + 1
ReDim Preserve vR(1 To 3, 1 To n)
If j = 0 Then
vR(1, n) = vDB(i, 1)
vR(3, n) = vDB(i, 3)
End If
vR(2, n) = vSplit(j)
Next j
Next i
Sheets.Add
Range("a1").Resize(n, 3) = WorksheetFunction.Transpose(vR)
End Sub