如何在Excel中将列中的行合并到一个单元格中?

例如

A1:I A2:am A3:a A4:boy 

我想把它们全部合并成一个单元格“Iamaboy”
这个例子显示了4个单元格合并到1个单元格中,但是我有很多单元格(超过100个),我不能使用A1 & A2 & A3 & A4逐个地input它们,我该怎么办?

我向你展示了我的ConcatenateRange VBA函数(感谢Jean的命名build议!)。 它将需要一系列单元格(任何维度,任何方向等)并将它们合并成一个单独的string。 作为可选的第三个参数,您可以添加分隔符(如空格或逗号分隔)。

在这种情况下,你会写这个来使用它:

 =ConcatenateRange(A1:A4) 
 Function ConcatenateRange(ByVal cell_range As range, _ Optional ByVal separator As String) As String Dim newString As String Dim cell As Variant For Each cell in cell_range If Len(cell) <> 0 Then newString = newString & (separator & cell)) End if Next If Len(newString) <> 0 Then newString = Right$(newString, (Len(newString) - Len(separator))) End If ConcatenateRange = newString End Function 

如果您不想使用VBA,则可以尝试以下操作:

  1. 有你的数据在单元格A1:A999(或这样的)
  2. 将单元格B1设置为“= A1”
  3. 将单元格B2设置为“= B1&A2”
  4. 将单元格B2一直复制到B999(例如通过复制B2,select单元格B3:B99并粘贴)

单元格B999现在将包含您正在查找的连接的文本string。

CONCATENATE ,如果展开它( F9 ),则可以使用TRANSPOSE ,然后删除像这样推荐的括号

 =CONCATENATE(TRANSPOSE(B2:B19)) 

 =CONCATENATE("Oh ","combining ", "a " ...) 

CONCATENATE(移调(B2:B19))

您可能需要添加自己的分隔符,例如创build一个列C并转置该列。

 =B1&" " =B2&" " =B3&" " 

在简单情况下,您可以使用下一个方法,而不需要您创build函数或将代码复制到多个单元格:

  1. 在任何单元格中写下一个代码

     =Transpose(A1:A9) 

A1:A9是你想要合并的单元格。

  1. 没有离开细胞按F9

之后,单元格将包含string:

 ={A1,A2,A3,A4,A5,A6,A7,A8,A9} 

资料来源: http : //www.get-digital-help.com/2011/02/09/concatenate-a-cell-range-without-vba-in-excel/

更新:一部分可能是不明确的。 没有离开细胞就意味着你的细胞处于编辑模式。 或者,你也可以在单元格编辑器面板中按下F9(通常可以在电子表格上方find它)

使用VBA已有的Join函数。 VBA函数不会在Excel中公开,所以我将它包装在一个用户定义的函数中,该函数公开了它的function。 最简单的forms是:

 Function JoinXL(arr As Variant, Optional delimiter As String = " ") 'arr must be a one-dimensional array. JoinXL = Join(arr, delimiter) End Function 

用法示例:

 =JoinXL(TRANSPOSE(A1:A4)," ") 

作为数组公式input(使用CtrlShiftEnter )。

在这里输入图像说明


现在, JoinXL只接受一维数组作为input。 在Excel中,范围返回二维数组。 在上面的例子中, TRANSPOSE将4×1二维数组转换成一个4元素的一维数组(这是TRANSPOSE在用单列二维数组进行馈送时所logging的TRANSPOSE行为)。

对于一个水平范围,你将不得不做一个双重TRANSPOSE

 =JoinXL(TRANSPOSE(TRANSPOSE(A1:D1))) 

TRANSPOSE将1×4二维数组转换成4×1二维数组,然后将外部TRANSPOSE转换成期望的4元素一维数组。

在这里输入图像说明

TRANSPOSE这种用法是在Excel中将二维数组转换为一维数组的一种众所周知的方法,但看起来很糟糕。 更优雅的解决scheme是将其隐藏在JoinXL VBA函数中。

对于那些有Excel 2016的人 (我想下一个版本),现在直接使用CONCAT函数,它将取代CONCATENATE函数。

所以在Excel 2016中正确的做法是:

 =CONCAT(A1:A4) 

这将产生:

我是一个男孩

对于旧版Excel的用户,其他答案是相关的。

对于Mac上的Excel 2011,它是不同的。 我做了三个步骤。

  1. 在列A中创build一列值
  2. 在列B中,在第一个单元格的右侧,创build一个使用列值和“,”的连接函数的规则。 例如,假定A1是第一行,则B1的公式是=B1 。 对于N行的下一行,公式是=Concatenate(",",A2) 。 你最终:
 QA
 ,Sekuli
 ,testing
 ,Applitools
 ,视觉testing
 ,testing自动化
 ,selenium
  1. 在列C中创build连接所有以前的值的公式。 因为它是添加剂,你会得到所有的结果。 单元格C1的公式是=B1 。 对于所有其他行到N,公式是=Concatenate(C1,B2) 。 你会得到:
 QA,Sekuli
 QA,Sekuli,testing
 QA,Sekuli,testing,Applitools
 QA,Sekuli,testing,Applitools,视觉testing
质量保证,Sekuli,testing,Applitools,视觉testing,testing自动化
质量保证,Sekuli,testing,Applitools,视觉testing,testing自动化,Selenium

列表的最后一个单元格将是你想要的。 这与Windows或Mac上的Excel兼容。

我使用CONCATENATE方法来获取列的值,并用中间的列将引号括起来,以便快速填充SQL语句的WHERE IN ()子句。

我总是键入=CONCATENATE("'",B2,"'",",") ,然后select并拖动它,创build=CONCATENATE("'",B3,"'",",") =CONCATENATE("'",B4,"'",",")等,然后突出显示整个列,将粘贴复制到纯文本编辑器并根据需要粘贴,从而剥离行分隔。 它可以工作,但是再一次,就像一次交易一样,对于一直需要这个的人来说这不是一个好的解决scheme。