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

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

1234 123461 123151 11321 

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

 1234,123461,123151,11321 

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

  • Как сохранить файл Excel как CSV, не теряя длинный текст?
  • У меня есть лист, который имеет 2 столбца; В одном - это имя, в другом - одно или несколько писем, разделенных запятой
  • Как изменить разделитель при копировании из Excel и вставить в блокнот
  • Расчет Excel на основе ввода пользователем из раскрывающихся полей
  • Excel - сумма значений, если их строка соответствует нескольким критериям
  • Может ли Excel показывать формулу и ее результат одновременно?
  • Транспонирование столбцов в строки в Microsoft Excel
  • Форматирование ячеек Excel
  • 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

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

    Давайте будем гением компьютера.