Excel - 列到一个单元格


8

您是否可以将一列数据移动到单个单元格中,并使用逗号分隔列中的值?一种反向文本到列。

例如,

1
2
3
4
5

1,2,3,4,5在单个小区。


您可以复制列,转置它然后导出为CSV吗?
kobaltz

Answers:


7

使用用户定义函数比逐个单元硬编码灵活得多

  • 同时按进入VBE
  • 插入模块
  • 复制并粘贴下面的代码
  • 同时按返回Excel

使用您的新公式,如D6单元格快照中的公式
=ConCat(A1:A5)

您可以使用更复杂的公式,例如D7
=ConCat(A1:A5,A7:A24)
或D8中的公式,即2D
=concat(A1:B5,A7:A24)

样品

Function ConCat(ParamArray rng1()) As String
    Dim X
    Dim strOut As String
    Dim strDelim As String
    Dim rng As Range
    Dim lngRow As Long
    Dim lngCol As Long
    Dim lngCnt As Long
    strDelim = ", "
    For lngCnt = LBound(rng1) To UBound(rng1)
        If TypeOf rng1(lngCnt) Is Range Then
            If rng1(lngCnt).Cells.Count > 1 Then
                X = rng1(lngCnt).Value2
                For lngRow = 1 To UBound(X, 1)
                    For lngCol = 1 To UBound(X, 2)
                        strOut = strOut & (strDelim & X(lngRow, lngCol))
                    Next
                Next
            Else
                strOut = strOut & (strDelim & rng2.Value)
            End If
        End If
    Next
    ConCat = Right$(strOut, Len(strOut) - Len(strDelim))
End Function

4
  • 首先,做

    =concatenate(A1,",")
    

    在您拥有值的旁边的下一列中。

  • 其次,复制整列并转到另一张表格做Paste Paste-> Transpose。

  • 第三,复制你刚刚获得的值,打开一个word文档,然后选择Paste Options - >选择“A”,
  • 最后,将word文档中的所有内容复制回Excel工作表中的单元格,您将获得一个单元格中的所有值

2

您可以使用连接函数并在单元格和字符串之间切换","

=CONCATENATE(A1,",",A2,",",A3,",",A4,",",A5)

1

如果它是一个looong值列,你可以使用CONCATENATE函数,但快速完成它有点棘手。假设细胞是A1:A10,在B9和B10中放置这些公式:

B9: = A9&“,”和B10

B10: = A10

现在,复制B9并将所有单元格粘贴到B列的顶部。

在B1中,您现在可以获得完整的结果。 复制>选择性粘贴>值。


1

惊人的答案,karthikeyan。我不想在VB中浪费时间,甚至不想从Ctrl + H中逃脱。这将是最简单的,我这样做。

  1. 在顶部插入一个新行(A)。
  2. 在数字1之上(即在A1上),键入等号(=)。
  3. 将逗号(,)从B1复制/粘贴到B23(不在B24中)。
  4. 选择A1到B24,在记事本中复制/粘贴。
  5. 在记事本中按(全选)Ctrl + A,按(复制)Ctrl + C,然后在Excel(F2)中的单个单元格内单击,然后(粘贴)Ctrl + V.

1

记事本是最简单和最快的。在Excel中,我添加了一列用于在A列中运行数字。我的数据在B列中。然后将A和B列复制到记事本中。使用记事本中的替换功能删除了额外的空格。从记事本复制并粘贴回单个单元格中的Excel,我想要数据。完成所有操作。不需要VB!


0

最佳和简单的解决方案:

选择要复制到单列的列范围

复制单元格范围(多列)

打开Notepad ++

粘贴选定的单元格范围

按Ctrl + H,将\ t替换为\ n,然后单击全部替换

所有多列都属于一列

现在复制相同并粘贴在excel中

对于那些不想在VBA中浪费时间编码的人来说,这是一个简单而有效的解决方案


1
看起来你只读了标题。如果您阅读整个问题并查看其他答案,您会发现这与所提出的问题无关。
fixer1234 2015年

0

将列中的值列表组合到单个单元格中的最简单方法我发现使用简单的连接公式。1)插入新列2)使用要组合的列作为第一个值插入连接公式,将分隔符(空格,逗号等)作为第二个值,将放置公式的单元格下方的单元格作为第三个值值。3)将公式向下拖动到感兴趣的列中数据的末尾4)在新创建的列中复制并粘贴特殊值以删除公式,并且BOOM!...所有值现在都在顶部单元格中。

例如,下面的公式将组合单元格C3中A列中列出的所有值,并用分号分隔它们= CONCATENATE(A3,“;”,C4)


这复制了其他解决方案,但最终会留下额外的分隔符。Jerry Beaucaire从6年前的答案是你的方法的工作版本。
fixer1234

-1

这是一个快速的方法...使用fill在每个值旁边插入一列“,”。在任何地方放置一个CONCATE公式,两个列都在范围内完成。结果是单个单元格,带有逗号的连接列表和每个单元格后面的空格。


我不明白你在说什么 - 而且,如果你认为这是可以理解的,它可能最终会等同于已经给出的一个(没有,几个)答案。
斯科特

@James我无法得到这个建议。在A1:A4我有1 2 3 4 (每行一个值)。在B1:B4,我有", "。在C5中,=concatenate(A1:B4). 如果实际上有效,那将会非常酷,但似乎并没有。你在想象别的东西吗?
亚当
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.