0

我正在尝试在每个单元格之间使用分隔符“,”连接 6 个单元格,但同时忽略空白单元格。我用这个问题来帮助我:How to Concatenate multiple columns if not empty

问题:

我遇到了分隔符出现在连接文本末尾的问题。所以我用 LEFT 和 LEN 去掉了多余的字符。有没有办法在 VBA 中解决这个问题而不在公式中使用 LEFT 和 LEN?

VBA代码:

Function Concat(ConcatArea As Range) As String
    For Each x In ConcatArea: xx = IIf(x = "", xx & "", xx & x & ", "): Next
    Concat = Left(xx, Len(xx) - 1)
End Function

公式:

=LEFT(Concat(Temp[@[En00]:[En05]]),LEN(Concat(Temp[@[En00]:[En05]]))-1)

解决方案:

在@AndreasAlun Rowe 的资源的帮助下,我能够使用不同的 UDF 。UDF 似乎模拟了 TEXTJOIN 函数(仅在 Office 365/2019 中可用):

Function IMPLODE(Rng As Range, Sep As String)
    Dim TEMP As String
    For Each Cell In Rng
        If Cell.Value = "" Then
        Else
            TEMP = TEMP & Cell.Value & Sep
        End If
    Next Cell
    TEMP = Left(TEMP, Len(TEMP) - Len(Sep))
    IMPLODE = TEMP
End Function
4

1 回答 1

1

您可以将 PHP 等效的 implode 函数用作 UDF。所有学分归于
原作者。

Function IMPLODE(Rng As Range, Sep As String)
    Dim TEMP As String
    For Each Cell In Rng
        If Cell.Value = "" Then
        Else
            TEMP = TEMP & Cell.Value & Sep
        End If
    Next Cell
    TEMP = Left(TEMP, Len(TEMP) - Len(Sep))
    IMPLODE = TEMP
End Function
于 2019-08-19T20:43:42.077 回答