Excel连接范围中的每个单元格

时间:2016-06-06 15:04:59

标签: excel excel-formula concatenation

我有两个公式可以找到我想要连接的范围。 一个公式返回范围开始的单元格地址,例如:

 '[AM Track.xlsm]Raw Data'!$A$10`  

另一个公式返回范围结束的单元格地址,例如

 '[AM Track.xlsm]Raw Data'!$A$21`

如何连接此范围内的每个单元格?

2 个答案:

答案 0 :(得分:1)

在Excel 2016中模仿TextJoin并符合您需求的快速VBA例程将是:

Function textjoin(delimiter As String, ignoreEmpty As Boolean, startcell As Range, endcell As Range) As String
    Dim rngCell As Range

    For Each rngCell In Range(startcell, endcell).Cells
        If (ignoreEmpty And rngCell.Value <> "") Or Not ignoreEmpty Then
            If textjoin = "" Then textjoin = rngCell.Value Else textjoin = textjoin & delimiter & rngCell.Value
        End If
    Next rngCell
End Function

这与Excel 2016 textjoin()内置公式之间的区别在于最后两个参数是范围的开始和结束(而不是像textjoin想要的单个范围)。

要使用此功能,请转到VBE(Alt + F11)。在工作簿的VBAProject中创建一个新模块。然后粘贴它。

答案 1 :(得分:0)

感谢Excel 2016中有关TextJoin的评论,我发现了这个:

Option Explicit
Function TEXTJOIN(delimiter As String, ignore_empty As String, ParamArray textn() As Variant) As String
    Dim i As Long
    For i = LBound(textn) To UBound(textn) - 1
        If Len(textn(i)) = 0 Then
            If Not ignore_empty = True Then
                TEXTJOIN = TEXTJOIN & textn(i) & delimiter
            End If
        Else
            TEXTJOIN = TEXTJOIN & textn(i) & delimiter
        End If
    Next
    TEXTJOIN = TEXTJOIN & textn(UBound(textn))
End Function