在excel中使用宏将多个单元格合并为一个单元格?
我有一个类似的问题: 但是我想把一系列的细胞组合在一个柱中,例如A2:A50。有时我有超过300个细胞被合并成一个。值是文本。有没有办法修改这个宏,使它在一个范围内工作,而不仅仅是两个单元格 谢谢 基于,我猜您希望返回单元格中所有值的浓缩,将所有值解释为字符串 为此,可以使用如下所示的VBA宏:在excel中使用宏将多个单元格合并为一个单元格?,excel,vba,Excel,Vba,我有一个类似的问题: 但是我想把一系列的细胞组合在一个柱中,例如A2:A50。有时我有超过300个细胞被合并成一个。值是文本。有没有办法修改这个宏,使它在一个范围内工作,而不仅仅是两个单元格 谢谢 基于,我猜您希望返回单元格中所有值的浓缩,将所有值解释为字符串 为此,可以使用如下所示的VBA宏: Function ConcatinateAllCellValuesInRange(sourceRange As Excel.Range) As String Dim finalValue As
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
例如,您可以这样称呼它:
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
这就是你要找的吗
Mike试试下面的宏,它不是很优雅,因为它不做任何错误检查等,但可以工作。将宏指定给按钮,单击单元格,单击宏按钮,使用鼠标高亮显示要合并的所需(源)范围(将在对话框的输入框中自动填充范围),单击确定,高亮显示目标单元格(将在下一个对话框中自动填充输入框)单击确定,所有单元格都将与单个空格字符合并到目标单元格中,目标单元格可以位于原始源区域)。由您手动删除多余的单元格。同时处理行和列,但不处理块
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
为了补充Mike的解决方案,如果您想从变量而不是定义的范围中获取范围(我在语法方面遇到了问题):