首页 > 解决方案 > 从单元格中提取最后一个子字符串

问题描述

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

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

单元格 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))

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

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

标签: excelexcel-formulaexcel-2016

解决方案


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

=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)))))

虽然我很确定有更快/更清洁的方法来获得你想要的东西。注意 ”!” 只是被选为不会出现在字符串中的字符。另请注意,这就是为什么最佳实践是将最小的数据块存储为单独的项目而不是一个字符串的原因!

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

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

推荐阅读