У меня есть задача создания простого листа Excel, который берет неуказанное количество строк в Столбце подобное это:
1234
123461
123151
11321
И превратите их в разделенный запятыми список в другой ячейке, которую пользователь может легко скопировать и вставить в другую программу как так:
1234,123461,123151,11321
Что самый легкий путь состоит в том, чтобы сделать это?
Я на самом деле просто создал модуль в 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)
и это дает мне разграниченный запятой список.
Вы могли сделать что-то вроде этого. Если бы Вы не говорите об огромной электронной таблице, это работало бы 'хорошо'...
Вот макро-код 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 также, но я не уверен как в данный момент, и потребность возвратиться к работе.;)
Вы могли использовать руководство Фаната с практическими рекомендациями по превращению строки в столбец и просто инвертировать его. Затем экспортируйте данные как csv (формат запятой-deliminated), и у Вас есть свой список запятой-seperated простого текста! Можно скопировать с блокнота и отложить его в Excel, если Вы хотите. Кроме того, если Вы хотят пространство после запятой, Вы могли бы сделать поиск и заменить функцию, замена"", с", ". Надежда, которая помогает!
Используйте vi или энергию для простого размещения запятой в конце каждой строки:
%s/$/,/
Объяснить эту команду:
%
средства делают действие (т.е. найдите и замените) ко всем строкамs
указывает на замену/
разделяет аргументы (т.е. s/find/replace/options
)$
представляет конец строки,
текст замены в этом случае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