Преобразовать столбец в список, разделенный запятыми

У меня есть задача создать простой лист Excel, который занимает неуказанное количество строк в столбце A, например:

1234 123461 123151 11321 

И сделайте их в список, разделенный запятыми, в другой ячейке, которую пользователь может легко скопировать и вставить в другую программу, например:

 1234,123461,123151,11321 

Каков самый простой способ сделать это?

13 Solutions collect form web for “Преобразовать столбец в список, разделенный запятыми”

Предполагая, что ваши данные начинаются в A1, я бы поставил следующее в столбце B:

B1:

 =A1 

БИ 2:

 =B1&","&A2 

Затем вы можете вставить столбец B2 по всему столбцу. Последняя ячейка в столбце B теперь должна быть разделенным запятой списком столбца A.

  • Скопировать столбец в Excel
  • Открытое слово
  • «Вставить специальные» только как текст
  • Выберите данные в Word (тот, который вам нужно преобразовать в текст, разделенный), нажмите Ctrl- H (Найти и заменить)
  • В поле «Найти, что» введите ^p
  • В поле «Заменить на» введите тип ,
  • Выберите «Заменить все»

Я на самом деле просто создал модуль в VBA, который выполняет всю работу. Он принимает мой список рангов и создает строку с разделителями-запятыми, которая выводится в ячейку по моему выбору:

 Function csvRange(myRange As Range) Dim csvRangeOutput Dim entry as variant For Each entry In myRange If Not IsEmpty(entry.Value) Then csvRangeOutput = csvRangeOutput & entry.Value & "," End If Next csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1) End Function 

Итак, тогда в моей ячейке я просто положил =csvRange(A:A) и он дает мне список с разделителями-запятыми.

Альтернативный подход заключается в том, чтобы вставить столбец Excel в этот инструмент в браузере:

convert.town/column-to-comma-separated-list

Он преобразует столбец текста в список, разделенный запятыми.

Так как пользователь все равно копирует и вставляет в другую программу, это может быть так же легко для них.

Вы могли бы сделать что-то подобное. Если вы не говорите об огромной электронной таблице, это будет «хорошо» …

  • Alt-F11, создать макрос для создания списка (см. Код ниже)
  • Назначьте его ярлык или кнопку панели инструментов
  • Пользователь вставляет столбец чисел в столбец A, нажимает кнопку, и их список переходит в ячейку B1.

Вот макрокоманда VBA:

 Sub generatecsv() Dim i As Integer Dim s As String i = 1 Do Until Cells(i, 1).Value = "" If (s = "") Then s = Cells(i, 1).Value Else s = s & "," & Cells(i, 1).Value End If i = i + 1 Loop Cells(1, 2).Value = s End Sub 

Не забудьте установить формат ячейки B1 в «текст», или вы получите испорченный номер. Я уверен, что вы тоже можете это сделать в VBA, но я не уверен, как на данный момент, и вам нужно вернуться к работе. 😉

Используйте vi или vim, чтобы просто поместить запятую в конце каждой строки:

 %s/$/,/ 

Чтобы объяснить эту команду:

  • % Означает, что действие (т.е. поиск и замена) на все строки
  • s указывает на замещение
  • / Разделяет аргументы (т. Е. s/find/replace/options )
  • $ Представляет собой конец строки
  • , Является заменяющим текстом в этом случае

Если у вас есть Office 365 Excel, вы можете использовать TEXTJOIN ():

 =TEXTJOIN(",",TRUE,A:A) 

Введите описание изображения здесь

Вы можете использовать руководство How-To Geek, чтобы превратить строку в столбец и просто отменить ее. Затем экспортируйте данные в формате csv (формат с разделителями-запятыми), и у вас есть список разделов, разделенных запятыми! Вы можете скопировать из блокнота и поместить его в Excel, если хотите. Кроме того, если вы хотите пробел после запятой, вы можете выполнить функцию поиска и замены, заменив «,» на «,». Надеюсь, это поможет!

Muncherelli, мне понравился ваш ответ, и я изменил его :). Просто незначительная вещь, иногда я извлекаю данные из листа и использую его для запроса базы данных. Я добавил необязательный параметр «textQualify», который помогает создать разделенный запятыми список, используемый в запросе.

 Function csvRange(myRange As Range, Optional textQualify As String) 'eg csvRange(A:A) or csvRange(A1:A2,"'") etc in a cell to hold the string Dim csvRangeOutput For Each entry In myRange If Not IsEmpty(entry.Value) Then csvRangeOutput = csvRangeOutput & textQualify & entry.Value & textQualify & "," End If Next csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1) End Function 

Я улучшил подмножество generatecsv () для обработки листа excel, который содержит несколько списков с пустыми строками, разделяющими заголовки каждого списка и списки из их названий. пример

 list title 1 item 1 item 2 list title 2 item 1 item 2 

И объединяет их в несколько рядов, по одному в списке.

Разумеется, у меня был клиент, который отправил мне несколько ключевых слов в формате списка для своего веб-сайта на основе темы, и вам нужен способ легко получить эти ключевые слова на веб-страницах. Так изменил рутину и придумал следующее, также я изменил имена переменных на простудные имена:

  Sub generatecsv() Dim dataRow As Integer Dim listRow As Integer Dim data As String dataRow = 1: Rem the row that it is being read from column A otherwise known as 1 in vb script listRow = 1: Rem the row in column B that is getting written Do Until Cells(dataRow, 1).Value = "" And Cells(dataRow + 1, 1).Value = "" If (data = "") Then data = Cells(dataRow, 1).Value Else If Cells(dataRow, 1).Value <> "" Then data = data & "," & Cells(dataRow, 1).Value Else Cells(listRow, 2).Value = data data = "" listRow = listRow + 1 End If End If dataRow = dataRow + 1 Loop Cells(listRow, 2).Value = data End Sub 

Ответ Sux2Lose – это мой предпочтительный метод, но он не работает, если вы имеете дело с более чем несколькими тысячами строк и можете ломаться даже на меньшее количество строк, если на вашем компьютере не так много доступной памяти.

Лучшая практика в этом случае – это, вероятно, скопировать столбец, создать новую книгу, прошедшую специальную в A1 новой книги и Transpose чтобы столбец теперь был строкой. Затем сохраните книгу как .csv . Теперь ваш csv представляет собой список разделенных запятыми в виде простого текста, который можно открыть в текстовом редакторе.

Примечание. Не забудьте перенести столбец в строку перед сохранением в виде csv. В противном случае Excel не будет знать запятые между значениями.

Используйте =CONCATENATE(A1;",";A2;",";A3;",";A4;",";A5) в ячейке, которую вы хотите отобразить.

Один из самых простых способов – использовать веб-приложение zamazin.co для этих задач, разделяющих запятую. Просто заполните данные столбца и нажмите кнопку конвертирования, чтобы сделать список, разделенный запятыми. Вы можете даже использовать некоторые другие настройки для улучшения желаемого результата.

http://zamazin.co/comma-separator-tool

Введите описание изображения здесь

  • Почему Excel не автоматически обновляет мои уравнения?
  • Сводная таблица - суммирование нескольких независимых столбцов данных
  • Формула Excel для выведения котировок
  • Удаление определенных дубликатов из массива Excel
  • Удалить повторяющиеся строки?
  • Заполните в Excel, но на основе нескольких значений
  • Сравните ячейки в двух разных таблицах и извлеките данные из одного места в другое, если совпадение найдено
  • Расчет Excel на основе ввода пользователем из раскрывающихся полей
  • Как я могу «группировать по» и суммировать столбец в excel?
  • Как я могу автоматически генерировать дату по количеству контактов в компании?
  • Различные значения из подмножества таблицы
  • Давайте будем гением компьютера.