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

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

1234
123461
123151
11321

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

1234,123461,123151,11321

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

17
задан Excellll
18.04.2023 21:28 Количество просмотров материала 2398
Распечатать страницу

13 ответов

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

B1:

=A1

B2:

=B1&","&A2

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

133
отвечен Sux2Lose 2023-04-20 05:16
  • скопируйте столбец в Excel
  • Открыть Word
  • "вставить специальный" как текст только
  • выберите данные в Word (тот, который вам нужно преобразовать в текст, разделенный ,), нажмите Ctrl -H (найти и заменить)
  • в поле" найти что " введите ^p
  • в поле "заменить на" введите ,
  • выберите "заменить все"
64
отвечен Michael Joseph 2023-04-20 07:33

на самом деле я только что создал модуль в 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) и это дает мне список разделенных запятыми.

21
отвечен muncherelli 2023-04-20 09:50

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

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

enter image description here

17
отвечен Scott Craner 2023-04-20 12:07

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

преобразовать.город/колонки в разделенный запятыми список

он преобразует столбец текста до запятой.

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

10
отвечен sunset 2023-04-20 14:24

вы могли бы сделать нечто подобное. Если вы не говорите об огромной электронной таблице, это будет выполнять "ok"...

  • 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, но я не уверен, как на данный момент, и нужно вернуться к работе. ;)

7
отвечен mpeterson 2023-04-20 16:41

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

%s/$/,/

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

  • % означает выполнить действие (т. е. найти и заменить) для всех строк
  • s указывает на замещение
  • / разделяет аргументы (т. е. s/find/replace/options)
  • $ обозначает конец строки
  • , текст замены в данном случае
6
отвечен Breathwork 2023-04-20 18:58

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

2
отвечен Duall 2023-04-20 21:15

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

Function csvRange(myRange As Range, Optional textQualify As String)
    'e.g. 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
2
отвечен mitch 2023-04-20 23:32

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

list title 1

item 1
item 2

list title 2

item 1
item 2

и объединяет их, конечно, в несколько строк, 1 в списке.

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

    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
1
отвечен roger lamb 2023-04-21 01:49

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

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

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

1
отвечен samthebrand 2023-04-21 04:06

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

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

enter image description here

-1
отвечен Hakan 2023-04-21 06:23

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

-2
отвечен Johnny 2023-04-21 08:40

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх