例如
A1:I
A2:am
A3:a
A4:boy
Run Code Online (Sandbox Code Playgroud)
我想将它们全部合并到一个单元格"Iamaboy"
这个例子显示4个单元格合并为1个单元格但是我有很多单元格(超过100个),我不能使用A1 & A2 & A3 & A4我能做什么来逐个输入它们?
Mis*_*nab 145
如果您不想在没有VBA的情况下执行此操作,可以尝试以下操作:
单元格B999现在将包含您要查找的连接文本字符串.
aev*_*nko 87
我向您展示了我的ConcatenateRange VBA函数(感谢Jean的命名建议!).它将采用一系列单元格(任何尺寸,任何方向等)并将它们合并为一个单独的字符串.作为可选的第三个参数,您可以添加分隔符(如空格或分隔的逗号).
在这种情况下,你写这个来使用它:
=ConcatenateRange(A1:A4)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
KCD*_*KCD 40
里面CONCATENATE你可以使用TRANSPOSE,如果你展开它(F9),然后卸下周围的{}括号像这样建议
=CONCATENATE(TRANSPOSE(B2:B19))
Run Code Online (Sandbox Code Playgroud)
变
=CONCATENATE("Oh ","combining ", "a " ...)
Run Code Online (Sandbox Code Playgroud)

您可能需要在最后添加自己的分隔符,例如创建一个C列并转置该列.
=B1&" "
=B2&" "
=B3&" "
Run Code Online (Sandbox Code Playgroud)
y.s*_*hyk 24
在简单的情况下,您可以使用下一个方法,它不需要您创建函数或将代码复制到多个单元格:
在任何单元格中编写下一个代码
=Transpose(A1:A9)
Run Code Online (Sandbox Code Playgroud)A1:A9是您想要合并的单元格.
F9之后,单元格将包含字符串:
={A1,A2,A3,A4,A5,A6,A7,A8,A9}
Run Code Online (Sandbox Code Playgroud)
资料来源:http://www.get-digital-help.com/2011/02/09/concatenate-a-cell-range-without-vba-in-excel/
更新:一部分可能含糊不清.不离开单元格意味着让您的单元格处于编辑器模式.另外,您可以在单元格编辑器面板中按F9(通常可以在电子表格上方找到)
Jea*_*ett 14
使用VBA已有的Join功能.VBA函数不会在Excel中公开,因此我将包含Join一个公开其功能的用户定义函数.最简单的形式是:
Function JoinXL(arr As Variant, Optional delimiter As String = " ")
'arr must be a one-dimensional array.
JoinXL = Join(arr, delimiter)
End Function
Run Code Online (Sandbox Code Playgroud)
用法示例:
=JoinXL(TRANSPOSE(A1:A4)," ")
Run Code Online (Sandbox Code Playgroud)
作为数组公式输入(使用Ctrl- Shift- Enter).

现在,JoinXL只接受一维数组作为输入.在Excel中,范围返回二维数组.在上面的示例中,TRANSPOSE将4×1二维数组转换为4元素的一维数组(这是TRANSPOSE当用单列二维数组提供时记录的行为).
对于水平范围,您必须执行双重操作TRANSPOSE:
=JoinXL(TRANSPOSE(TRANSPOSE(A1:D1)))
Run Code Online (Sandbox Code Playgroud)
内部TRANSPOSE将1×4二维阵列转换为4×1二维阵列,TRANSPOSE然后外部转换为预期的4元素一维阵列.

这种用法TRANSPOSE是一种众所周知的在Excel中将2D数组转换为1D数组的方法,但它看起来很糟糕.更优雅的解决方案是将其隐藏在JoinXLVBA功能中.
对于那些拥有Excel 2016(我想下一个版本)的人来说,现在直接有CONCAT函数,它将取代CONCATENATE函数.
因此,在Excel 2016中执行此操作的正确方法是:
=CONCAT(A1:A4)
Run Code Online (Sandbox Code Playgroud)
这将产生:
我是一个男孩
对于旧版本Excel的用户,其他答案是相关的.