![](/img/trans.png)
[英]How to combine multiple cells value (dynamic) in one specific cell in excel via VBA macro?
[英]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.