将一个列转换为逗号分隔的列表
我有一个简单的Excel表格的任务,需要在A列中取一个未指定的行数,像这样:
1234
123461
123151
11321
,然后将它们转换为逗号分隔的列表,在另一个单元格中,用户可以很容易地复制并粘贴到另一个程序中,像这样:
1234,123461,123151,11321
有什么最简单的方法吗?
我有一个简单的Excel表格的任务,需要在A列中取一个未指定的行数,像这样:
1234
123461
123151
11321
,然后将它们转换为逗号分隔的列表,在另一个单元格中,用户可以很容易地复制并粘贴到另一个程序中,像这样:
1234,123461,123151,11321
有什么最简单的方法吗?
,
隔开),按Ctrl-H(查找&替换)
—在 "查找什么 "框中键入^p
—在 "替换为 "框中键入,
—选择 "全部替换”如果你有Office 365 Excel,那么你可以使用TEXTJOIN():
=TEXTJOIN(",",TRUE,A:A)
实际上,我只是在VBA中创建了一个模块,它可以完成所有的工作。它把我的Rangeed列表,然后创建一个逗号分隔的字符串,输出到我选择的单元格中:
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
它可以将一列文本转换为逗号分隔的列表。
使用vi,或vim在每行的末尾加上一个逗号:
%s/$/,/
解释一下这个命令:
- %
表示对所有的行进行操作(即查找和替换)
- s
表示替换,
- /
表示分隔参数(即
- s/find/replace/options
)
- $
表示行的结束,在本例中
- ,
是替换文本
你可以这样做。如果你不是在讨论一个巨大的电子表格,那么这个操作就可以了…..
这里是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
&001
要确保将B1单元格的格式设置为 “文本",否则你会得到一个混乱的数字。我相信你也可以在VBA中做,但我不知道如何做,现在还需要回去工作。)
Sux2Lose的回答是我的首选方法,但如果你处理的是几千行以上的数据,那就不行了,如果你的电脑可用内存不多,可能会断掉更少的行。然后将工作簿保存为A1
。现在你的csv基本上就是一个纯文本的逗号分隔的列表,你可以在文本编辑器中打开。否则Excel不会知道在值之间加逗号。
我改进了generatecsv()子程序,以处理一个包含多个列表的excel表,在每个列表的标题和列表的标题之间用空行隔开。所以我修改了这个例程,并得出了以下的方法,同时我把变量名改为有意义的名字:
list title 1
item 1
item 2
list title 2
item 1
item 2
我是这样做的
删除了所有不需要的列和数据,然后保存为.csv文件,然后用Visual Studio代码编辑器替换了多余的逗号和新的行。你好
其中一个最简单的方法是使用zamazin.co web app来完成这类逗号分隔任务。只需填写列数据,然后点击转换按钮,就可以制作一个逗号分隔的列表。你甚至可以使用一些其他设置来提高所需的输出。 http://zamazin.co/comma-separator-tool