在单个单元格中添加换行符

我现在尝试为此find一个解决scheme。 我每个月都会生成特定的报告,并使用此报告自动生成发票。

其中一个报告单元包含与此类似的数据

Contract Ref: #Service Schedule 001 Site A: No, 22, ABC Road,City A: TSV Site B: Home exchange City B: TSV Service ID: xxxxxxxxxxx W/O: 123 Capacity: Multiple 

我需要强制换行到所有这些看起来像这样的单元格。

 Contract Ref: # Service Schedule 001 Site A: No, 22, ABC Road, City A: TSV Site B: Home exchange City B: TSV Service ID: xxxxxxxxxxx W/O: 123 Capacity: Multiple 

有人能帮我吗?

你可以使用下面的UDF

 Function SplitText(r As Range) As String Dim i As Integer, ii As Integer i = Application.Find("Service S", r) SplitText = SplitText & Left(r, i - 1) & vbLf ii = Application.Find("Site A", r) SplitText = SplitText & Mid(r, i, ii - i) & vbLf i = Application.Find("City A", r) SplitText = SplitText & Mid(r, ii, i - ii) & vbLf ii = Application.Find("Site B", r) SplitText = SplitText & Mid(r, i, ii - i) & vbLf i = Application.Find("City B", r) SplitText = SplitText & Mid(r, ii, i - ii) & vbLf ii = Application.Find("Service ID", r) SplitText = SplitText & Mid(r, i, ii - i) & vbLf i = Application.Find("W/O", r) SplitText = SplitText & Mid(r, ii, i - ii) & vbLf ii = Application.Find("Capacity", r) SplitText = SplitText & Mid(r, i, ii - i) & vbLf SplitText = SplitText & Right(r, Len(r) - i + 1) End Function 

在目标单元格中​​input公式后,您需要将目标单元格设置为Wrap Text。

例如,如果文本是在A1和目标单元格是A4,然后在A4 put = SplitText(A1)和A4格式Wrap文本。

要通过VBA在Excel中添加换行符,您必须使用Chr(10)

例如,下面的代码在所选单元格中的每个字符之后添加一个换行符。

你将不得不find方法来告诉你的代码插入新行的适当点在哪里。

 Sub insert_nl() Dim rng As Range Set rng = Selection Dim ic As Integer, nc As Integer Dim s1 As String, s2 As String s1 = rng.Value nc = Len(s1) s2 = "" For ic = 1 To nc - 1 s2 = s2 & Mid(s1, ic, 1) & Chr(10) ' This line adds the newline character Next ic s2 = s2 & Mid(s1, nc, 1) rng.Value = s2 End Sub 

这是一个稍微不同的方法:

 Option Explicit Private Const sFldNames = ",Contract Ref:,Service Schedule,Site A:,City A:,Site B:,City B:,Service ID:,W/O:,Capacity:" 'Call this Sub with the parameters supplied and it is done Private Sub SplitReportString(sRpt As String, sTabName As String, row As Long, col As Long) 'sTabName is the worksheet's name you want to write your output to 'row and col is where you want to start writing your output at Dim vFldNamesArray As Variant Dim i As Long Dim vRptArray As Variant vFldNamesArray = Split(sFldNames, ",") For i = 1 To UBound(vFldNamesArray, 1) sRpt = Replace(sRpt, vFldNamesArray(i), "," & vFldNamesArray(i)) Next vRptArray = Split(sRpt, ",") With ThisWorkbook.Worksheets(sTabName) For i = 1 To UBound(vRptArray) .Cells(row + i - 1, col) = vRptArray(i) Next End With End Sub