使用Excel中的VBA将两个单元格的内容合并到另一个第三个单元格中

使用Excel中的VBA将两个单元格的内容合并到另一个第三个单元格中,vba,excel,Vba,Excel,我有两个单元格,比如说:A1和A2 其中每一个的内容都是一个字符串: 你好 A2:世界 我的目标是将A1和A2的内容合并到另一个单元格中,例如A3,即A3的内容应为: 哈罗世界 我希望使用VBA宏来执行此操作,而不仅仅是将字符串作为内容 谢谢你们俩的回答 我建议使用Excel公式 =A1&A2 或VBA宏 Range("A3").Cell.Value = Range("A1").Cell.Value & Range("A2").Cell.Value 尽管,正如MasterMi

我有两个单元格,比如说:A1和A2

其中每一个的内容都是一个字符串:

你好

A2:世界

我的目标是将A1和A2的内容合并到另一个单元格中,例如A3,即A3的内容应为:

哈罗世界

我希望使用VBA宏来执行此操作,而不仅仅是将字符串作为内容


谢谢你们俩的回答

我建议使用Excel公式

=A1&A2
或VBA宏

Range("A3").Cell.Value = Range("A1").Cell.Value & Range("A2").Cell.Value

尽管,正如MasterMix所说,这最容易通过公式实现,但如果您有必须使用VBA的原因,则这取决于您希望如何指定单元格

您可以将其作为一个函数:

Private Function addTwoCells(rngA As Range, rngB As Range) As String addTwoCells = rngA & rngB End Function 私有函数addTwoCells(rngA作为范围,rngB作为范围)作为字符串 addTwoCells=rngA和rngB 端函数 不过,这只是复制了内置的Excel连接函数(速度要快得多)

您也可以在一个过程中使用大约一百种方法中的一种,下面是一种提示用户输入范围的方法:

Private Sub addTwoCellsProc() Dim rngA As String Dim rngB As String Dim rngOutput As String Dim rngTest As Range Do rngA = InputBox("Please enter first cell address", "Cell A") rngA = Range(rngA).Cells(1, 1).Address Set rngTest = Intersect(Range(rngA).Cells(1, 1), ActiveSheet.Cells) Loop Until Not rngTest Is Nothing Do rngB = InputBox("Please enter second cell address", "Cell B") rngB = Range(rngB).Cells(1, 1).Address Set rngTest = Intersect(Range(rngB), ActiveSheet.Cells) Loop Until Not rngTest Is Nothing Do rngOutput = InputBox("Please enter destination cell address", "Output cell") Set rngTest = Intersect(Range(rngOutput), ActiveSheet.Cells) Loop Until Not rngTest Is Nothing Range(rngOutput) = Range(rngA) & Range(rngB) End Sub 私有子addTwoCellsProc() 作为字符串的Dim rngA 将rngB设置为字符串 将rngOutput设置为字符串 变暗rngTest As范围 做 rngA=输入框(“请输入第一个单元格地址”,“单元格A”) rngA=范围(rngA).单元格(1,1).地址 设置rngTest=Intersect(范围(rngA).Cells(1,1),ActiveSheet.Cells) 循环直到不是rngTest什么都不是 做 rngB=输入框(“请输入第二个单元格地址”,“单元格B”) rngB=范围(rngB).单元格(1,1).地址 设置rngTest=Intersect(范围(rngB),ActiveSheet.Cells) 循环直到不是rngTest什么都不是 做 rngOutput=InputBox(“请输入目标单元格地址”,“输出单元格”) 设置rngTest=Intersect(范围(rngOutput),ActiveSheet.Cells) 循环直到不是rngTest什么都不是 范围(rngOutput)=范围(rngA)和范围(rngB) 端接头
如果有多个范围要组合,还可以使用预定义的范围并在其中循环。如果您对场景进行更多解释,那么可能会有人提供更具体的代码。

这一个更快,只需选择单元格,它们就会合并到第一个单元格中

'------------------------------------------------------------------------
' Procedure : Concatenate Text
' Author    : Tim Bennett
' Date      : 11/6/2015
' Purpose   : Concatenate selected text into first column
'------------------------------------------------------------------------
'
'Sub Concatenate_Formula(bConcat As Boolean, bOptions As Boolean)
Sub Concatenate()

Dim rSelected As Range
Dim c As Range
Dim sArgs As String
Dim bCol As Boolean
Dim bRow As Boolean

    'Set variables
    Set rOutput = ActiveCell
    bCol = False
    bRow = False

    On Error Resume Next

    'Use current selection
    Set rSelected = Selection

    On Error GoTo 0

    'Only run if cells were selected and cancel button was not pressed
    If Not rSelected Is Nothing Then
        sArgs = "" 'Create string of cell values
        firstcell = ""

        For Each c In rSelected.Cells
            If firstcell = "" Then firstcell = c.Address(bRow, bCol)
            sArgs = sArgs + c.Text + " " 'build string from cell text values

            c.Value = "" ' Clear out the cells taken from
        Next

        'Put the result in the first cell
        Range(firstcell).Value = sArgs



   End If
End Sub

在更一般的情况下,这里有一个宏连接任意数量的单元格(甚至是非相邻的单元格块)。注意:我没有包含检查用户取消的代码

Sub G()

    Dim strFinal$
    Dim cell As Range
    Dim rngSource As Range
    Dim rngArea As Range
    Dim rngTarget As Range

    Set rngSource = Application.InputBox("Select cells to merge", Type:=8)
    Set rngTarget = Application.InputBox("Select destination cell", Type:=8)
    For Each rngArea In rngSource
        For Each cell In rngArea
            strFinal = strFinal & cell.Value & " "
        Next
    Next
    strFinal = Left$(strFinal, Len(strFinal) - 1)
    rngTarget.Value = strFinal

End Sub

&
这是正确答案。我们为什么要写代码?嗨,什么是“内置Excel连接函数”?你是说
&
?使用
&
而不是
+
不是更好吗?