2016-11-28 86 views
0

有一些新的數據可以用Text to rows格式進行鍛鍊。Text to Column change as Text to row

在正常情況下,我們將在Excel中使用文本分隔符來分隔一列中的數據。 我需要行明智的相同功能。

示例 列中的位置列表。

CHARLESTON, JACKSONVILLE, BALTIMORE, NEW YORK, NORFOLK, SAVANNAH 
CHARLESTON, JACKSONVILLE, BALTIMORE, NEW YORK, NORFOLK, SAVANNAH 
HOUSTON, MOBILE, NEW ORLEANS 
HOUSTON, MOBILE, NEW ORLEANS 
PORT EVERGLADES 

預期結果:

源數據預期結果

CHARLESTON 
JACKSONVILLE 
BALTIMORE 
NEW YORK 
NORFOLK 
SAVANNAH 

請幫我一個相同的VBA代碼。

感謝 Sample

  • 示例文件更新:

Excel

+0

您可以將這些行分割成數組並將它們打印到工作表中。在一個循環中運行它以在其自己的列中打印每一行。 – Brian

+0

分裂爲正常,然後unpivot? – xQbert

+2

或者,您也可以像往常一樣使用「文本到列」,然後複製範圍和「粘貼特殊」>>「轉置」以完全避免使用VBA。 :-) – Brian

回答

0

您可以使用此子:

Sub TextToRows(txt As String, targetRng As Range) 
    Dim arr As Variant 

    arr = Split(Replace(txt, " ", ""), ",") 
    targetRng.Resize(UBound(arr) + 1).Value = Application.Transpose(arr) 
End Sub 

從主代碼稱爲FO llows:

TextToRows Range("A1").Text, Range("B1") '<--| write the content of cell "A1" from cell "B1" downwards 
+0

感謝您的輸入........根據需要靠近。更新了源數據和結果報告...請幫助 – Mike

+0

我向您提供了代碼,以滿足您所要求的_「文本到列更改爲文本到行」_您要求並根據您的鏈接示例。你可能想接受我的答案。雖然對於進一步的問題,你應該提出一個新帖子,展示你的編碼工作 – user3598756

0

試試這個:

Option Explicit 

Public Sub TextToRows(MyRange As Range) 

Dim MyArray As Variant 
Dim r As Range 
Dim i As Integer 

i = 0 
For Each r In MyRange 
    MyArray = Split(WorksheetFunction.Trim(r), ", ") 
    Range("B1").Offset(0, i).Resize(UBound(MyArray) + 1, 1).Value = Application.Transpose(MyArray) 
    i = i + 1 
Next r 

End Sub 

Sub RunTest() 
    TextToRows Range("A1:A5") 
End Sub 

只在A列的前五個行,並打印到B列及以後的工程數據。但是你可以修改它。 :-)