Как настроить собственный первый разделитель в Excel, а затем использовать стандартный - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь создать книгу 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

Я хочу Окончательный результат выглядит следующим образом:

enter image description here

1 Ответ

0 голосов
/ 08 апреля 2020

Сообщение, предложенное @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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...