2016-04-25 196 views
0

我有一份工作簿,其中包含有換行符(通過ALT + ENTER輸入)的單元格,但現在必須再次將它們分隔爲單獨的行......所有單元格在列A中。Excel VBA - 將多行分隔成行

單元格中的每一行都有一個項目符號點(例如「*」),它可以作爲excel腳本在此時斷開線的信標。任何人都有一些代碼可以幫助我做到這一點?我不知道如何去這個...

enter image description here

樣品圖片附後。

感謝

+0

您可以使用拆分功能拆分(單元格(1,1),, 「*」),並不斷循環落筆列A(其中i = 1開始,加入1下移),出放入另一列 –

+1

使用'VbLf'作爲分隔符而不是''''也可以使用這些子彈。 – newguy

回答

1

您可以使用拆分與CHR(10)或VbLf

Dim cell_value As Variant 
Dim counter As Integer 

'Row counter 
counter = 1 

'Looping trough A column define max value 
For i = 1 To 10 

    'Take cell at the time 
    cell_value = ThisWorkbook.ActiveSheet.Cells(i, 1).Value 

    'Split cell contents 
    Dim WrdArray() As String 
    WrdArray() = Split(cell_value, vbLf) 

    'Place values to the B column 
    For Each Item In WrdArray 
     ThisWorkbook.ActiveSheet.Cells(counter, 2).Value = Item 
     counter = counter + 1 
    Next Item 


Next i 

不,你有數組的每一行的地方,不同的細胞

0

沒有必要的代碼,這,讓它變得簡單。

按照下面的步驟。

選擇要拆分的數據集→轉到數據選項卡→選擇「文本到列」→從此彈出框中選擇「分隔符」→選擇哪個分隔符將文本分隔開→選擇目標單元格 - >單擊「確定」

試試這個。

問候, 阿什溫

+0

這將拆分成列,而不是行,此外不可能將vbCrLf定義爲分隔符。 –

+1

您可以簡單地通過複製數據(將數據分離爲多列後)向@ Ashwin的解決方案中添加另一個步驟,右鍵單擊第一個單元格下方的單元格,選擇選擇性粘貼,然後選擇轉置。但是,如果工作簿「充滿細胞」(如上所述),這不是最好的解決方案。 VBA更好。 – Brian

0

如果您選擇單元格,運行宏,你會得到你想要的東西就這樣在下一列:

Option Explicit 

Public Sub selection_into_rows() 


    Dim k   As Variant 
    Dim l_counter As Long 

    k = Split(Selection, Chr(10)) 

    For l_counter = LBound(k) To UBound(k) 
     Cells(l_counter + 1, Selection.Column + 1) = k(l_counter) 
    Next l_counter 

End Sub 
0

這隻會選擇後一排工作它(但應該讓你開始):

Option Explicit 

Public Sub SelectionIntoRows() 

Dim k() As String 
Dim l As Long 
Dim i As Long 

k() = Split(Range("A1"), " ") 
i = 1 
For l = 0 To UBound(k) 
    Cells(i, 1) = k(l) 
    i = i + 1 
Next l 

End Sub