将一列中的多个单元格串联为一个单元格

时间:2019-02-25 20:54:47

标签: excel vba

我需要在一个单元格的一列中合并多个单元格。

数据存在于A列:

0100
0800
ABCD
LMKQ
.
.
.

以此类推

单元格B2应具有以下值:

'0100','0800','ABCD','LMKQ'...等等

我的代码识别所有数据,但仅填充最后一个单元格中的数据:

Sub concatMyData()

    For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        Cells(2, "B").Value = "'" & Cells(i, "A").Value & " '" & Cells(i + 1, "A").Value & "'"
    Next i

End Sub

2 个答案:

答案 0 :(得分:1)

检查:

Sub concatMyData()
    Dim first As Boolean
    first = True
    For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
        If Not first Then Cells(2, "B").Value = Cells(2, "B").Value & ", "
        Cells(2, "B").Value = Cells(2, "B").Value & "'" & Cells(i, "A").Value & "'"
        first = False
    Next i
End Sub

答案 1 :(得分:1)

您可以使用一行代码来执行此操作,而不必循环(快得多):

Range("B2").Formula = "'" & join(application.transpose(Range("A2:A" & range("A" & rows.count).end(xlup).row)),"', '") & "'"

我假设您在A1中有一个标头,所以从A2开始,您可以根据需要将其更改为A1。

我注意到您要求对其他答案进行解释,这样:

Egan的代码将遍历A列中的每个单元格,并将其添加到当前在B2单元格中的内容。因此,它基本上将B列中它所在的单元格的值添加到B2中,并且每次循环', '直到它用完A列中的数据为止。还将'放在B2上。开始和结束。

我的代码将获取范围并将其转置为数组(数据下降,数组移到一边,所以我们将其转置),然后它将值数组合并为单个字符串。我们使用JOIN函数进行此操作,并指定', '作为它应放置在数组的每个元素(定界符)之间的位置。

然后,我们只需在开头和结尾添加一个',因为它不会以voila开头,这是一串没有循环的连接值。

他们有效地做同样的事情,我只是一次做而不是一次做。