2016-11-28 158 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列及以后的工程数据。但是你可以修改它。 :-)