【问题标题】:Text to Column change as Text to row文本到列更改为文本到行
【发布时间】:2016-11-28 16:26:36
【问题描述】:

有一些新数据可以使用文本到行格式进行锻炼。

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

【问题讨论】:

  • 您可以将这些行拆分为一个数组并将它们打印到工作表中。在循环中运行它以在自己的列中打印每一行。
  • 正常拆分然后反透视?
  • 或者您可以像往常一样使用Text to Columns,然后复制范围和Paste Special >> Transpose 完全避免使用VBA。 :-)
  • 文本到列然后转置?

标签: excel vba text-to-column


【解决方案1】:

你可以使用这个子:

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 

【讨论】:

  • 感谢您的意见......根据需要靠近。更新了报告的源数据和结果...请帮助
  • 我给了你代码来满足你所要求的“文本到列更改为文本到行”,并且按照你的链接示例。然后你可能想接受我的回答。对于其他问题,您应该发一篇新帖子来展示您的编码工作
【解决方案2】:

试试这个:

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 列及以后。但是你可以修改它。 :-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 2013-09-22
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    相关资源
    最近更新 更多