我有一個數據範圍,其中一些單元格有換行符,我需要將換行符分成行下面出現行的位置,但保持其他單元格不變。如果這有所改變,也會有多個列。是否可以使用換行符將單元格拆分爲多個行?
我已經使用了下面提供的兩個答案,一些調整適合我的工作表,但都不適用於拆分所有單元格。我甚至嘗試了兩種方法,但那也行不通。
當列A中存在換行符時,它正在工作,但是當列A中沒有換行符,並且在另一列中存在換行符時,它不起作用。如果列A中沒有換行符,我只需要拆分有換行符的行並將其合併到下面的行中。
這裏是代碼:
end_row = range("A" & Rows.count).End(xlUp).row
range("A:A").TextToColumns Destination:=range("a1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, OtherChar _
:=" ", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
For i = 1 To end_row
row_added = False
For j = 1 To 4
If InStr(1, Cell, Chr(10)) <> 0 Then
If Not row_added Then
Rows(i + 1).Insert
row_added = True
end_row = end_row + 1
End If
Cells(i + 1, j) = Right(Cells(i, j), Len(Cells(i, j)) - InStr(1, Cell, Chr(10)))
Cells(i, j) = Left(Cells(i, j), InStr(1, Cell, Chr(10)) - 1)
End If
Next j
Next i
而且
Sub LFtoRow()
Dim myWS As Worksheet, myRng As range
Dim LastRow As Long, iLoop As Long, jLoop As Long
Dim myString() As String
Set myWS = ActiveSheet
LastRow = myWS.Cells(myWS.Rows.count, 1).End(xlUp).row
For iLoop = LastRow To 1 Step -1
myString = Split(myWS.Cells(iLoop, 1), Chr(10))
If UBound(myString, 1) > 0 Then
myWS.Rows(iLoop + 1 & ":" & iLoop + UBound(myString, 1)).Insert shift:=xlShiftDown
For jLoop = 0 To UBound(myString, 1)
myWS.Cells(iLoop + jLoop, 1) = myString(jLoop)
Next jLoop
End If
Next iLoop
End Sub
無論是新的代碼完全,或只是要添加到年底會的工作。我有一個正在發生的事情的例子,我希望它看起來像下面那樣。 (我知道這顯示了B柱的照片,但在MACRO這一點上,在A列)
正在發生的事情:
在換行符上試試'split'?不知道是什麼語法雖然XD – findwindow
而不是替代「」你可以使用該字符串作爲TextToColumns中的OtherChar。這應該保存一些代碼行。 – Fredrik
爲了記錄,如果這是一次性任務,則可以使用「文本到列」將數據分隔到新的行分隔符處。你只需要(在另一個分隔符文本框中)按住'ALT'鍵的同時鍵入'010'。 10是換行又名Excel新行字符的UNICODE值。 –