从单元格中提取最后一个子字符串

Extract the last but one substring from a cell

我在一栏中有地址。我只需要将该列中的最后一个名称拆分到另一列中。

最后一个子字符串由左右两侧的 space 分隔。

单元格 A2 中的内容是“via Milano, 25 ROMA RM”,我在单元格 B2 中输入了以下公式(我需要在单元格 B2 中输入“ROMA”)

我尝试使用以下公式:

=MID(A2,FIND(CHAR(1),SUBSTITUTE(A2," ",CHAR(1),LEN(A2)-LEN(SUBSTITUTE(A2," ",""))))+1,LEN(A2))

但它 returns 给定字符串的最后一个子字符串(在本例中为“RM”)。无法设法修改它以获得最后一个子字符串。如果有用:当前使用 macOS Catalina 10.15.7.

编辑:字符串地址的格式始终与“via”、“street name”、“house number”、“comune”、“province”相同。

你可以做一些可怕的事情:

=LEFT(
RIGHT(
SUBSTITUTE(A2," ","!",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1),
LEN(SUBSTITUTE(A2," ","!",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1))-
SEARCH("!", SUBSTITUTE(A2," ","!",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1))),

SEARCH(" ",
RIGHT(SUBSTITUTE(A2," ","!",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1),
LEN(SUBSTITUTE(A2," ","!",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1))-
SEARCH("!", SUBSTITUTE(A2," ","!",LEN(A2)-LEN(SUBSTITUTE(A2," ",""))-1)))))

虽然我很确定有 faster/cleaner 种方法可以得到你想要的东西。注意 ”!”只是被选为不会出现在字符串中的字符。另请注意,这就是为什么最佳做法是将最小的数据片段存储为单独的项目而不是一个字符串!

要求编辑:如果您只是想将所有内容都放在逗号右侧和 space 左侧(例如“Via Milano, 25 ROMA RM”中的“25”),您可以使用类似下面的东西

=LEFT(
TRIM(RIGHT(A2,LEN(A2)-SEARCH(",",A2))),
SEARCH(" ", TRIM(RIGHT(A2,LEN(A2)-SEARCH(",",A2)))))