TEXTJOIN输出的逆序

Gar*_*ent 2 excel vba excel-formula

我被要求从Excel工作簿中删除Excel VBA UDF。这是为了使工作簿在无宏的环境中运行。

该代码颠倒了逗号分隔字符串中项目的顺序。代码非常简单:

Public Function FlipIt(Sin As String) As String
    Dim a, arr

    FlipIt = ""
    arr = Split(Sin, ",")
    For Each a In arr
        FlipIt = a & "," & FlipIt
    Next a
    FlipIt = Left(FlipIt, Len(FlipIt) - 1)
End Function
Run Code Online (Sandbox Code Playgroud)

它在工作表中使用,例如:

=flipit(TEXTJOIN(",",TRUE,A1:A6))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我写代码是因为我无法弄清楚如何以TEXTJOIN()相反的顺序进行输出。

我能想到的最好的方法是使用一个帮助器列。因此,在D1中,我输入:

=IF(ROWS($1:1)>COUNTA(A:A),"",INDEX(A:A,COUNTA(A:A)-ROWS($1:1)+1))
Run Code Online (Sandbox Code Playgroud)

并向下复制。使用:

=TEXTJOIN(",",TRUE,D1:D6)
Run Code Online (Sandbox Code Playgroud)

我不相信这种简单的事情需要“帮助”列。

有什么建议么??

Sco*_*ner 8

使用此数组公式可向后创建名称数组:

=TEXTJOIN(",",TRUE,INDEX(A1:A7,N(IF({1},ROWS(A1:A7)-ROW(A1:A7)+MIN(ROW(A1:A7))))))
Run Code Online (Sandbox Code Playgroud)

作为数组公式,退出编辑模式时必须使用Ctrl-Shift-Enter而不是Enter进行确认。

在此处输入图片说明


Microsoft将SEQUENCE发布到Office 365后,可以将其缩短为:

=TEXTJOIN(",",TRUE,INDEX(A:A,SEQUENCE(ROWS(A1:A7),,ROWS(A1:A7),-1)))
Run Code Online (Sandbox Code Playgroud)

可以使用Enter正常输入。

  • 真的***让我摆脱了他如何使困难变得如此轻松和优雅...加上1 ... (4认同)