文本到列更改为文本到行

时间:2016-11-28 16:26:37

标签: excel vba text-to-column

使用文本到行格式来训练一些新数据。

在正常情况下,我们将使用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

2 个答案:

答案 0 :(得分:0)

你可以使用这个Sub:

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

从主代码中调用如下:

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

答案 1 :(得分: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列及更高的列。但你可以修改它。 : - )