【问题标题】:VBA to convert text to columns in multiple sheets except oneVBA将文本转换为多个工作表中的列,除了一个
【发布时间】:2020-04-25 19:35:44
【问题描述】:

我是 VBA 编码的新手,我正在尝试将除一张之外的所有表格中的文本转换为文本,但没有取得成功。我在每张纸的 A 列中有文字,行数可能不同。

这就是我的代码的样子

Sub text_to_column()
Application.ScreenUpdating = False

Dim ws As Worksheet
Dim arr() As Variant, i As Long, nrCol As Long

    For Each ws In ThisWorkbook.Worksheets
     If ws.Name <> "Summary" Then
            ws.Select
            nrCol = 20
            ReDim arr(1 To nrCol) As Variant
            For i = 1 To nrCol
            arr(i) = Array(i, 1)
            Next
            Selection.TextToColumns _
            Destination:=Range("A1"), _
            DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, _
            Tab:=True, _
            Semicolon:=False, _
            Comma:=False, _
            Space:=False, _
            Other:=True, _
            OtherChar:="^", _
            FieldInfo:=arr, _
            TrailingMinusNumbers:=True
    End If
    Next ws

    End Sub

请指导。

【问题讨论】:

  • 你好。为我们提供数据(输入)和所需输出的示例。而且您没有提到代码中的问题。
  • 我需要将文本转换成列。文本在每张纸的 A 列中。我在运行代码时遇到运行时错误。由于没有选择要解析的数据,因此代码读出。输入数据格式为“4^DD^1^1^1^O^^1^^AAAAA1088G^^^XYZ PVT LTD^1808.00^0.00^0.00^1808.00^^1808.00^^^90422.00^14052018^14052018 ^^2.0000^^^^^^^94C^^^^^^^^^^"

标签: excel vba text-to-column


【解决方案1】:

试试这个代码

Sub Test()
Dim a, x, ws As Worksheet, r As Long

For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "Summary" Then
        For r = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row
            x = Split(ws.Cells(r, 1).Value, "^")
            ws.Cells(r, 2).Resize(, UBound(x) + 1).Value = x
        Next r
    End If
Next was
End Sub

至于你的方法,你可以使用这样的代码

Sub TextToColumns()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "Summary" Then
        Application.DisplayAlerts = False
            ws.Columns(1).TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="^", FieldInfo:=Array(Array(1, 1)), TrailingMinusNumbers:=True
        Application.DisplayAlerts = True
    End If
Next was
End Sub

【讨论】:

  • 谢谢。这行得通。你能告诉我我的代码有什么问题吗?
  • 谢谢。真正的帮助。
  • 不客气。很高兴我能提供一些帮助。将答案标记为已解决。
猜你喜欢
  • 2021-08-20
  • 1970-01-01
  • 1970-01-01
  • 2017-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-22
相关资源
最近更新 更多