使用& amp;加入excel中的一系列单元格

时间:2015-01-08 05:57:10

标签: excel excel-vba vba

我知道我可以使用&连接一组单元格,如下所示:

A1 & B1 & C1 & D1。有没有办法使用A1:P1为范围&写这个?

3 个答案:

答案 0 :(得分:4)

您可以使用一系列列中的公式(每个列按顺序连接)或使用 UDF 用户定义函数)来完成此操作。

公式方法

Concatenate a Range with Formula

F2中的公式为

=A2

G2中的公式是,

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

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

VBA UDF方法

点击 Alt + F11 ,当VBE打开时,立即使用下拉菜单插入►模块( Alt + 中号)。将以下内容粘贴到标题为 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 返回工作表。

Concatenate a Range with UDF

语法很简单,

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, ";")来演示更改分隔符的能力。

答案 1 :(得分:1)

对于1D范围(单个列或行),您可以尝试这个

对于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

答案 2 :(得分:1)

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

  

假设要合并的单元格位于Transpose

     

在空白单元格中,您要连接所有值类型B2:B19

     

请勿按Enter键。

     

选择TRANSPOSE(B2:B19)部分并按F9。这将=CONCATENATE(TRANSPOSE(B2:B19))替换为其结果

     

现在删除大括号TRANSPOSE(B2:B19){

     

按Enter&amp;你做完了!

来自链接的演示:
Image http://img.chandoo.org/q/concatinate-transpose-trick.gif