首页 > 解决方案 > 如何在 excel 中设置自定义第一个分隔符,然后使用标准分隔符

问题描述

我正在尝试创建一个将自动进行对帐过程的 Excel 工作簿,但遇到了一个我无法克服的问题。

初始输入文件是逗号分隔的 CSV 文件。问题是一些条目有额外的逗号,所以当我对列进行文本处理时,一些单元格的内容不正确。第一列之后的下一个单元格中有文本,所以我试图找到一种方法将其用作分隔符。以下是条目的外观:

第一行:a、b、c、d(总是用逗号分隔,因此代码中的部分分开) 第二行(90% 的情况下):a、b、c、d 第二行(10% 的情况下):a1、 a2, b, c, d

上一行中的 B 是一个文本并带有引号,因此看起来像“b”。

有没有办法将文本调整为列以使其正常工作?

这是我到目前为止整理的代码:

Sub ExampleSplit1()
      Range("A1").TextToColumns _
      Destination:=Range("A1"), _
      DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, _
      ConsecutiveDelimiter:=False, _
      Tab:=True, _
      Semicolon:=False, _
      Comma:=True, _
      Space:=False, _
      Other:=False, _
      OtherChar:="-"

      Range(Range("A2"), Range("A2").End(xlDown)).TextToColumns _
      Destination:=Range("A2"), _
      DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, _
      ConsecutiveDelimiter:=False, _
      Tab:=True, _
      Semicolon:=False, _
      Comma:=True, _
      Space:=False, _
      Other:=False, _
      OtherChar:="-"

End Sub

我希望最终结果如下所示:

在此处输入图像描述

标签: excelvba

解决方案


@Frank Ball 建议的帖子有适合我的解决方案。下面是代码

Sub CSV_Import()
Dim ws As Worksheet, strFile As String

Set ws = ActiveWorkbook.Sheets("Sheet1") 'set to current worksheet name

strFile = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "Please select text file...")

With ws.QueryTables.Add(Connection:="TEXT;" & strFile, Destination:=ws.Range("A1"))
     .TextFileParseType = xlDelimited
     .TextFileCommaDelimiter = True
     .Refresh
End With
End Sub

推荐阅读