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

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

1234
123461
123151
11321

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

1234,123461,123151,11321

Что самый легкий путь состоит в том, чтобы сделать это?

129
задан 14.04.2014, 20:38

7 ответов

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

23
ответ дан 07.12.2019, 07:48

Принятие Ваших данных запускается в A1, я поместил бы следующее в столбец B:

B1:

=A1

B2:

=B1&","&A2

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

145
ответ дан 07.12.2019, 07:48

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

  • 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
ответ дан 07.12.2019, 07:48

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

2
ответ дан 07.12.2019, 07:48

Используйте vi или энергию для простого размещения запятой в конце каждой строки:

%s/$/,/

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

  • % средства делают действие (т.е. найдите и замените) ко всем строкам
  • s указывает на замену
  • / разделяет аргументы (т.е. s/find/replace/options)
  • $ представляет конец строки
  • , текст замены в этом случае
7
ответ дан 07.12.2019, 07:48

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

-2
ответ дан 07.12.2019, 07:48

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
ответ дан 07.12.2019, 07:48

Теги

Похожие вопросы