Я видел похожие темы в Интернете, но не могу найти подходящую для моей проблемы. Я сокращу свое обсуждение, так как это слишком долго, чтобы обсуждать. Поэтому мне нужно объединить столбец A, столбец B и столбец C, разделенные знаком «¦». Мне нужно разделить с помощью «» (не нужно спрашивать, почему мне нужно объединить ¦, а затем разделить его с помощью ¦ - это долгий процесс. Это только суть), но есть вероятность, что данные содержат «¦ ". Можно ли игнорировать или сначала убрать символ "¦" в данных, чтобы он не считался разделителем? Изменение разделителя также может появиться в данных. Я делаю форму, поэтому мне нужно использовать VBA.
Например,
Column A | Column B | Column C | Column D
111 | AAA | 1A1 | 111¦AAA¦1A1
222 | BBB | 2B2 | 222¦BBB¦2B2
333 | CC¦C | 3C3 | 333¦CC¦C¦3C3
Если я разделю приведенный выше пример, он будет выглядеть так, а это неверно.
Column A | Column B | Column C | Column D
111 | AAA | 1A1 |
222 | BBB | 2B2 |
333 | CC | C | 3C3
Разве вы не можете использовать «Фиксированную ширину» при использовании мастера импорта текста? После импорта текста в Excel вы можете заменить символ |
пустым символом.
@Rory - Я не могу вспомнить другие символы, которые невозможно использовать в данных. Но, не ожидал, когда я попытался создать отчет и потерпел неудачу. Итак, когда я проверил данные клиента, есть. Я делаю форму, поэтому мне нужно использовать VBA.
@Dominique - я создаю форму, поэтому мне нужно использовать VBA.
Откровенно говоря, ваши данные плохо сформированы, но это life :)! Вам необходимо использовать так называемые «квалификаторы текста», которые позволят символу, который вы используете в качестве разделителя, появляться в текстовых элементах, которые вы хотите разделить, и не рассматривать его как разделитель.
Пример того, что вам нужно:
"111"|"AAA"|"1A1"
"222"|"BBB"|"2B2"
"333"|"CC|C"|"3C3"
Скопируйте / вставьте третью строку данных в новый лист, а затем запустите на ней мастер текста в столбцы (TtCW) для текста с разделителями. На втором этапе вы увидите раскрывающийся список «Классификатор текста» с правой стороны.
Возможно, вам понадобится использовать VBA для объединения данных с текстовыми квалификаторами, а затем снова разделить их с помощью TtCW. Запишите макрос, чтобы увидеть, как вы можете его автоматизировать, и вы сможете включить его в свой код.
Я делаю форму, поэтому мне нужно использовать VBA.
Мое решение использует Get & Transform без vba (требуется недавнее дополнение Excel или Power Query). Я отлично работал с вашими данными, оставив CC¦C в столбце B.
Получить данные из диапазона
Разделить все с помощью | разделитель
Щелкните правой кнопкой мыши последний столбец -> Разделить по разделителю ¦
Переименовать заголовки столбцов
Я делаю форму, поэтому мне нужно использовать VBA.
Преобразование текста в столбцы с VBA - ваш лучший выбор, тогда другой ответ выглядит хорошо.
вы можете заменить |
на символ, который вы не используете, например, на ^
(или с каким-либо шаблоном, например, [ThisIsPipe]
), а во время split()
(или после) заменить обратно ^
(или введенный шаблон), например, на |
.
ИМХО, для [конкатенации ~~> split] лучше использовать те символы, которые не отражаются в листе
Согласовано. Мне нравится использовать что-то из непечатаемого диапазона, например Chr$(30)
(разделитель записей) или Chr$(7)
(звонок) для подобных вещей.
@Vasily - спасибо :). Сейчас я использую вашу идею.
По какой причине вы должны использовать этот конкретный разделитель?