将列转换为逗号分隔的列表

mun*_*lli 157 microsoft-excel

我的任务是创建一个简单的 Excel 工作表,该工作表在 A 列中采用未指定数量的行,如下所示:

1234
123461
123151
11321
Run Code Online (Sandbox Code Playgroud)

并将它们放入另一个单元格中的逗号分隔列表中,用户可以轻松地将其复制并粘贴到另一个程序中,如下所示:

1234,123461,123151,11321
Run Code Online (Sandbox Code Playgroud)

什么是最简单的方法来做到这一点?

Sux*_*ose 161

假设您的数据从 A1 开始,我会将以下内容放在 B 列中:

乙1:

=A1
Run Code Online (Sandbox Code Playgroud)

乙2:

=B1&","&A2
Run Code Online (Sandbox Code Playgroud)

然后,您可以将列 B2 向下粘贴到整列。B 列中的最后一个单元格现在应该是 A 列的逗号分隔列表。

  • 这对于有限数量的行非常有用,但是(取决于可用内存?)如果您连接的行数超过几千行,则该过程将缩短,从而使您的输出值不完整。当心。 (10认同)

小智 98

  • 在 Excel 中复制列
  • 打开字
  • “选择性粘贴”仅作为文本
  • 选择 Word 中的数据(需要转换为以 分隔的文本的数据,),按Ctrl- H(查找和替换)
  • 在“查找内容”框中键入 ^p
  • 在“替换为”框中键入 ,
  • 选择“全部替换”


Sco*_*ner 63

如果您有 Office 365 Excel,则可以使用 TEXTJOIN():

=TEXTJOIN(",",TRUE,A:A)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

  • 正如 Scott 指出的,重要的警告仅限于 Excel 365。 Excel 2016 中不存在该函数。 (3认同)
  • 如果您需要引号分隔列表 `'a','b','c'`,请尝试 `="'" & TEXTJOIN("','",TRUE,A:A) & "'"` (2认同)

mun*_*lli 25

我实际上只是在 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
Run Code Online (Sandbox Code Playgroud)

所以然后在我的单元格中,我只是放了=csvRange(A:A)它,它给了我逗号分隔的列表。

  • 啊..非常接近我的答案,但我喜欢你的实现。 (2认同)

sun*_*set 12

另一种方法是将 Excel 列粘贴到此浏览器内工具中:

convert.town/column-to-comma-separated-list

它将一列文本转换为逗号分隔的列表。

由于用户无论如何都在复制和粘贴到另一个程序,这对他们来说可能同样容易。


mpe*_*son 7

你可以做这样的事情。如果你不是在谈论一个巨大的电子表格,这将执行“确定”......

  • 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
Run Code Online (Sandbox Code Playgroud)

请务必将单元格 B1 的格式设置为“文本”,否则您会得到一个混乱的数字。我相信你也可以在 VBA 中做到这一点,但我现在不确定如何,需要重新开始工作。;)


小智 7

使用 vi 或 vim 简单地在每行末尾放置一个逗号:

%s/$/,/
Run Code Online (Sandbox Code Playgroud)

解释这个命令:

  • % 表示对所有行执行操作(即查找和替换)
  • s 表示替代
  • /分隔参数(即,s/find/replace/options
  • $ 代表一行的结尾
  • , 在这种情况下是替换文本


归档时间:

查看次数:

953302 次

最近记录:

4 年,10 月 前