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)
我不相信这种简单的事情需要“帮助”列。
有什么建议么??
使用此数组公式可向后创建名称数组:
=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正常输入。