将一列中的多个单元格连接成一个单元格



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

数据出现在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

检查这个:

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

你可以用一行代码来做到这一点,而不必循环(快得多):

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

我假设您在 A1 中有一个标头,因此从 A2 开始,如果您愿意,您可以将其更改为 A1。

我注意到你要求对另一个答案进行解释,所以:

Egan的代码将遍历A列中的每个单元格,并将其添加到单元格B2中的当前内容中。因此,它基本上将 A 列中哪个单元格的值添加到 B2 中,每次循环直到 A 列中的数据用完为止,都会添加一个', '。它还对开始和结束设置了'

我的代码将获取范围并将其转置为一个数组(数据下降,数组横向移动,所以我们转置它),然后将值数组连接到单个字符串中。我们使用JOIN函数执行此操作,并指定', '作为它应该放在数组的每个元素(分隔符)之间的内容。

然后我们只需在开头和结尾添加一个',因为它一开始就没有它,瞧,一个没有循环的连接值字符串。

他们有效地做同样的事情,我的只是一次性完成而不是一次一个细胞。

最新更新