簡體   English   中英

使用宏將多個單元格合並為一個excel?

[英]Combine multiple cells into one in excel with macro?

我有一個類似的問題:

使用Excel中的VBA將2個單元格的內容合並到另一個第3單元格中

但我想在一列中組合一系列細胞,例如A2:A50。 有時我有超過300個細胞合並為一個。 值是文本。 有沒有辦法修改這個宏,以便它可以在一個范圍而不是只有兩個單元格?

謝謝!

基於您引用的主題 ,我想您希望返回單元格所持有的所有值的連接,將所有值解釋為字符串?

為此,您可以使用如下所示的VBA宏:

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

這是你在找什么?

麥克風

嘗試下面的宏,不是很優雅,因為它不做任何錯誤檢查等但是有效。 將宏分配給按鈕,單擊單元格,單擊宏按鈕,使用鼠標突出顯示要合並的所需(源)范圍(將在對話框的輸入框中自動填充范圍),單擊確定,突出顯示目標單元格(將在下一個對話框中自動填充輸入框)單擊確定,所有單元格將與單個空格字符合並到目標單元格中​​,該單元格可以位於原始源范圍內)。 由您自己手動刪除多余的單元格。 具有行和列但不是塊的工作。

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的解決方案,如果你想從變量而不是定義的范圍獲得你的范圍(我的語法有問題):

Sub MyMacro()

dim myVar As Range

    MsgBox ConcatinateAllCellValuesInRange(myVar)

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM