将macros中的多个单元合并为一个?

我也有类似的问题:

在Excel中使用VBA将2个单元格的内容合并到另一个第3个单元格中

但是我想在一列中合并一系列单元格,例如A2:A50。 有时我有超过300个单元格被合并成一个。 值是文本。 有没有什么办法可以修改这个macros,使它在一个范围内而不是两个单元格上工作?

谢谢!

根据你所引用的线程 ,我想你希望返回单元格中所有值的连接,将所有值解释为string?

为此,您可以使用如下所示的VBAmacros:

Function ConcatinateAllCellValuesInRange(sourceRange As Excel.Range) As String Dim finalValue As String Dim cell As Excel.Range For Each cell In sourceRange.Cells finalValue = finalValue + CStr(cell.Value) Next cell ConcatinateAllCellValuesInRange = finalValue End Function 

举个例子,你可以这样调用它:

 Sub MyMacro() MsgBox ConcatinateAllCellValuesInRange([A1:C3]) End Sub 

这是你在找什么?

麦克风

尝试下面的macros,不是非常优雅的,它不做任何错误检查等,但工程。 将macros指定给一个button,单击一个单元格,单击macrosbutton,使用鼠标高亮显示要合并的所需(源)范围(将在对话框的input框中的范围内自动填充),单击确定,突出显示目标单元格(将自动填充下一个对话框中的input框)单击确定,所有单元格将与单个空格字符合并到目标单元格,它可以在原始源范围中)。 由您决定手动删除多余的单元格。 具有行和列但不包括块的工作。

 Sub JoinCells() Set xJoinRange = Application.InputBox(prompt:="Highlight source cells to merge", Type:=8) xSource = 0 xSource = xJoinRange.Rows.Count xType = "rows" If xSource = 1 Then xSource = xJoinRange.Columns.Count xType = "columns" End If Set xDestination = Application.InputBox(prompt:="Highlight destination cell", Type:=8) If xType = "rows" Then temp = xJoinRange.Rows(1).Value For i = 2 To xSource temp = temp & " " & xJoinRange.Rows(i).Value Next i Else temp = xJoinRange.Columns(1).Value For i = 2 To xSource temp = temp & " " & xJoinRange.Columns(i).Value Next i End If xDestination.Value = temp End Sub 

只要添加到迈克的解决scheme,如果你想从一个variables,而不是一个定义的范围(我有语法的麻烦)你的范围:

 Sub MyMacro() dim myVar As Range MsgBox ConcatinateAllCellValuesInRange(myVar) End Sub