使用 & 连接 excel 中的一系列单元格

Joining a range of cells in excel using &

我知道我可以像这样使用 & 连接一组单元格:

A1 & B1 & C1 & D1。有没有办法使用 & 为范围 A1:P1 编写此代码?

您可以使用一系列列中的公式(每列按顺序连接前一列)或使用 UDF用户定义函数).

公式方法

F2中的公式为,

=A2

G2中的公式为,

=IF(LEN(B2), F2&","&B2, F2)

向右填充 G2 以捕获所有可用的文本值。

VBA UDF 方法

点击 Alt+F11 并且当 VBE 打开时,立即使用 pull-down 菜单插入 ► 模块 (Alt+I,M)。将以下内容粘贴到标题为 Book1 - Module1 (Code).

的新窗格中
Function udf_stitch_Together(r As Range, Optional d As String = ", ") As String
    Dim s As String, c As Range
    For Each c In r
        If CBool(Len(c.Text)) Then _
            s = s & IIf(Len(s), d, vbNullString) & c.Text
    Next c
    udf_stitch_Together = s
End Function

点击 Alt+Q 到 return 到您的工作表。

语法很简单,

udf_stitch_Together(<range to concatenate>, <[optional] delimiter>)

为了您的目的,这将是,

=udf_stitch_Together(A2:P2)

... 或者,

=udf_stitch_Together(A2:P2, ", ")

根据需要填写。请注意,我在 F5:F6 中使用了 =udf_stitch_Together(A5:P5, ";") 来演示更改分隔符的能力。

对于您拥有的一维范围(单个列或行),您可以试试这个

对于Row,你的例子,它会被称为

=StrCat(A1:P1, TRUE)

Function StrCat(rng1 As Range, bRows As Boolean) As String
If bRows Then
    'row
    StrCat = Join(Application.Transpose(Application.Transpose(rng1)), ", ")
Else
    'column
    StrCat = Join(Application.Transpose(rng1), ", ")
End If
End Function

我知道这是一个老问题,但我找到了一种使用 Concatenate 的方法,就像@brettdj 所说的那样。使用 this link 中的方法,您可以使用 ConcatenateTranspose 的组合将范围连接在一起,如下所示:

Let say the cells you want to combine are in B2:B19.

In a blank cell, where you want to concatenate all the values type =CONCATENATE(TRANSPOSE(B2:B19))

Don’t press enter yet.

Select the TRANSPOSE(B2:B19) portion and press F9. This replaces the TRANSPOSE(B2:B19) with its result

Now remove curly brackets { and }

Press Enter & you're Done!

来自 link 的演示:

(来源:chandoo.org