我被要求从 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
它在工作表中的使用如下:
=flipit(TEXTJOIN(",",TRUE,A1:A6))
我编写代码是因为我无法弄清楚如何以相反的顺序输出 TEXTJOIN()
。
我能想到的最好办法就是使用辅助列。所以在D1中我输入:
=IF(ROWS($1:1)>COUNTA(A:A),"",INDEX(A:A,COUNTA(A:A)-ROWS($1:1)+1))
并向下复制。用途:
=TEXTJOIN(",",TRUE,D1:D6)
我不敢相信这么简单的事情需要“帮助器”列。
有什么建议吗?
最佳答案
使用此数组公式来创建向后的名称数组:
=TEXTJOIN(",",TRUE,INDEX(A1:A7,N(IF({1},ROWS(A1:A7)-ROW(A1:A7)+MIN(ROW(A1:A7))))))
作为数组公式,退出编辑模式时必须使用 Ctrl-Shift-Enter 确认,而不是 Enter。
<小时/>一旦 Microsoft 将 SEQUENCE 发布到 Office 365,它可以缩短为:
=TEXTJOIN(",",TRUE,INDEX(A:A,SEQUENCE(ROWS(A1:A7),,ROWS(A1:A7),-1)))
回车即可正常输入。
关于excel - TEXTJOIN 输出的逆序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57206567/