2015-10-29 212 views
0

我想修改/格式的文本是在像細胞內的新行: this is formatted text that I don't want 分成細胞

如果文本包含「;」或子彈,創造一個新的行。

簡而言之,我將該單元格複製到noteped(.txt)中,並將多個項目符號複製到一行或「;」中。我想創造一個新的行。現在,我手動修改它。

謝謝!

編輯:

Sub foo1() 

Dim txt As String 
Dim i As Integer 
Dim FullName As Variant 
Dim oldText As String 
txt = Cells(2, 5) 
FullName = Split(txt, ";") 

For i = 0 To UBound(FullName) 
    oldText = Cells(2, 1).Value 
    Cells(2, 1).Value = oldText & vbCrLf & "•" & FullName(i) 

Next 
End Sub 

我成功。只有兩個問題:1.如何設置兩個分隔符? 2.爲什麼當我將單元格的值複製到記事本中時,它會用「」來包裝它?

+0

你嘗試過什麼嗎? – Calum

+0

您應該使用'Split'函數來分割輸出並將其轉發到數組中。之後,您可以使用「轉置」功能來轉換陣列,使其成爲一個列表。 – Luuklag

+0

@Calum請查看我的編輯。我已經成功完成了第一次休息,但我不知道如何將整個數組插入一個單元格。 – Stefan0309

回答

1

如果妳希望它在多個單元格:

Sub fool() 

    Dim txt as String, txt2 as variant 

    txt = Replace(Cells(2, 5), ".", ";") 
    txt2 = Split(txt, ";") 

    Range(Cells(2, 1), Cells(Ubound(txt2) + 2, 1) = _ 
    Application.WorksheetFunction.Transpose(txt2) 

End Sub 

如果妳想要在一個囚室:

Sub fool() 

    Dim txt as String 

    txt = Replace(Cells(2, 5), ".", vbCrLf) 
    txt = Replace(txt, ";", vbCrLf) 

    Cells(2, 1) = txt 

End Sub 

嗯......如果u想保持細胞的舊文本(2 ,1),然後更改最後一行:

 Cells(2, 1) = Cells(2, 1) & vbCrLf & txt 

編輯:或乾淨的方式:

Sub fool() 

    Dim txt As String, i As Byte 

    txt = Cells(2, 1) & vbCrLf & Cells(2, 5) 

    'change all delimeters 
    For i = 0 To 2 
    txt = Replace(txt, Array(".", ";", "•")(i), vbCrLf) 
    Next 

    'eliminate doubles 
    Do While InStr(txt, vbCrLf) > 0 
    txt = Replace(txt, vbCrLf & vbCrLf, vbCrLf) 
    Loop 

    Cells(2, 1) = txt 

End Sub 
+0

將各個不同的分隔符替換爲一個(如「。」到「;」和「項目符號」爲「;」)後,只需一個分隔符即可自由使用「分割」 –

+0

就是這樣!我將你的代碼合併到我的。大! :) 謝謝! – Stefan0309