Я получаю пакет данных в виде файла .csv от нашего менеджера баз данных. Я импортирую эти данные в Excel для форматирования и сортировки. Однако один столбец содержит три фрагмента информации, которые я хочу проанализировать и отсортировать. Одна ячейка в этом столбце состоит из номера идентификатора пользователя и имени пользователя (например: "83920 - johndavis"). Я хочу иметь возможность сортировать этот столбец на основе каждого из этих терминов. Возможно ли это с помощью макросов в Excel или мне следует использовать VBA, и если да, то как вы предлагаете подойти к этой проблеме?
У меня есть опыт работы с языками C и Python, поэтому, несмотря на ограниченные знания VBA, у меня есть опыт в области компьютерных наук.
Вот некоторая информация, которую я собрал, экспериментируя с решениями. Эта страница была моей отправной точкой:https://www.cedarville.edu/insights/blog/excel-how-to-parse-data-split-column-into-multiple.aspx Однако, когда я попытался использовать этот метод, разделение столбцов столкнулось с ошибками и не разделилось должным образом (см. рисунки). Я полагаю, что это происходит потому, что данные столбцов — это фактические данные, обработанные в VBA с другой страницы таблицы Excel. Как бы вы решили разрешить эту идиосинкразию?
Данные, отображаемые на панели функций
Страница 1 мастера разделения столбцов
Страница 2 Мастера разделения столбцов
решение1
Это довольно странный CSV, поскольку он содержит формулы Excel. Не ожидается, что CSV будет содержать что-то еще, кроме данных.
В настоящее время ячейка содержит не только значение данных B09 - Theater
, но и формулу:
=IFERROR(@__xludf.DUMMYFUNCTION("""COMPUTED_VALUE"""), "B09 - Theater")
TheЕСЛИОШИБКАформула вычисляет (фиктивную) функцию @__xludf.DUMMYFUNCTION("""COMPUTED_VALUE""")
и, если она возвращает ошибку, записывает значение B09 - Theater
.
Если вам не нужно поддерживать эти формулы (я не знаю, служат ли они какой-либо цели), а вам нужны только данные, проще всего будет выбрать все ячейки ивставьте их на новый лист какценности.
После этого вы можете использоватьответ iskyfire.
решение2
Согласно моему комментарию к вашему посту, вы можете сделать это:
Я бы также отметил, что ваше изображение, показывающее ссылку на функцию VBA с префиксом @__xludf.
likely, означает, что функция недоступна для текущей рабочей книги. Она может находиться в другом модуле другой рабочей книги или в недоступной библиотеке.
Независимо от этого, в простых случаях с частью 1разделительчасть2, вы можете использовать формулы выше.
В более сложных случаях вы можете выбрать любую ячейку в данных и использовать команду «Данные»>«Получить и преобразовать данные»>«Из таблицы/диапазона», чтобы запустить PowerQuery.
В редакторе Power Query вы можете выбрать столбец, который хотите разделить, и использовать меню «Главная»> «Преобразование»> «Разделить столбец»> «По разделителю», а затем настроить его следующим образом (например):
Затем можно использовать команду «Главная»>«Закрыть и загрузить», чтобы загрузить результаты обратно в рабочую книгу.
решение3
Преобразовать текст в столбцы
Если у вас есть ячейка, содержащая несколько значений данных, вы можете разделить их с помощью встроенного мастера преобразования текста в столбцы. Это создаст таблицу с одним значением данных на столбец, что позволит вам использовать все фильтры и методы сортировки, доступные в Excel.
Примечание:Если у вас есть несколько уникальных разделителей, разделяющих каждое значение данных, например, 83920/johndavis - new york city
вы можете использовать поиск и замену, чтобы изменить все символы -
на /
или наоборот. Вам нужно иметь один и тот же разделитель, разделяющий каждое значение данных, или вам придется запускать мастер несколько раз.
Видетьhttps://support.microsoft.com/en-us/office/split-text-into-different-columns-with-the-convert-text-to-columns-wizard-30b14928-5550-41f5-97ca-7a3e9c363ed7для получения дополнительной информации.
Удаление посторонних функций
Если имеющиеся у вас данные инкапсулированы, вы можете использовать функцию «Найти и заменить» с Match entire cell contents
отмеченными и Look in: Formulas
выбранными элементами.
Выберите диапазон, перейдите в меню «Найти и заменить», введите нужные данные и замените все. Например, =IFERROR(@__xludf.DUMMYFUNCTION("""COMPUTED_VALUE"""),"
на пустую строку.
Затем вы можете запустить его еще раз, чтобы удалить конечную часть ")
и получить пустую строку.
Перед выполнением масштабных операций поиска и замены обязательно создайте резервную копию исходной копии рабочего листа.