是否有一个 Excel 函数(或宏)可以用来反转字符串。即these words
变成sdrow eseht
?
这就是为什么我需要它:
我的字符串类似于John|XYZ Street|215|USA
,我需要找到最后一个字符后的文本|
。
因此,我考虑反转字符串以找到|
其中 FIRST 之前的文本。如果有人知道任何其他方法来找到 LAST |
,这可能是一个有用的解决方案。
|
注 1:字符串的数量各不相同;因此,搜索第 3 个|
将不起作用。
注2:我知道文本到列按钮,但我不能使用它,因为它会影响我的工作表的所有结构。
答案1
答案2
您可以使用这个 LET 公式:
=LET( string, D6,
L, LEN( string ),
CONCAT( MID( string, SEQUENCE( 1, L, L, -1), 1) ) )
它将字符串分解为 1 个字符的单元格数组,然后以相反的顺序将它们重新组合成连接的字符串。
阅读了完整的问题陈述后,这里有一个可以解决此问题的方法。它不依赖于反转字符串,但我明白你为什么要这样做。
首先,让我们制作一个字符串分割器:
=LET( string, A1,
delimiter, A2,
IF( ISBLANK( string ), "",
IF( LEN( delimiter ) = 0,
MID( string, SEQUENCE( 1, LEN( string ) ), 1),
TRANSPOSE( FILTERXML( "<main><sub>" & SUBSTITUTE( string, delimiter, "</sub><sub>" ) & "</sub></main>", "//sub" ) ) ) )
)
这只是根据分隔符将单元格内容拆分为一个值数组。现在您可以修改它以获取数组的最后一个元素。以下是其中一种方法:
=LET( string, A1,
delimiter, A2,
strArray, IF( ISBLANK( string ), "",
IF( LEN( delimiter ) = 0,
MID( string, SEQUENCE( 1, LEN( string ) ), 1),
TRANSPOSE( FILTERXML( "<main><sub>" & SUBSTITUTE( string, delimiter, "</sub><sub>" ) & "</sub></main>", "//sub" ) ) ) ),
elements, COUNTA( strArray ),
INDEX( strArray, 1, elements )
)
它有点重,但用途也很广泛。
答案3
A1 空白,A2 为要反转的字符串,B1 为零,B2 中有一个公式,它是形式为 的链=IFERROR(MID($A2,25+B$1*25,1)&IFERROR(MID($A2,24+B$1*25,1)&.....
,依此类推,其中术语 '25+' 按照所示逐步减少到 1。
当 B$1 包含 0 时,这将反转任何长度不超过 25 个字符的字符串。
为了将其缩放到更长的字符串,比如说 100 个字符,将公式复制到 C2:E2,其中 C1:E1 为 1、2 和 3。
然后在 F2 中,有=E2&D2&C2&B2
,它将保存整个字符串的反转。
给定足够多的列,或者用行而不是列来做一些非常相似的事情,你原则上可以逆转《战争与和平》,如果你可以把它放入一个单元格中。
但最重要的是它可以扩展,你不需要知道字符串到底有多长;一列版本将处理 25、10 甚至零个字符而不会出错。
是的,我知道有一个 VBA 函数可以做到这一点;但在我的工作中,信息技术的预防者 Mordac 仍然活得很好,不喜欢.xlsm