excel - 从单元格中提取最后一个子字符串
问题描述
我在一列中有地址。我需要将该列中的最后一个名称拆分为另一列。
最后一个子字符串由左右两侧的空格分隔。
单元格 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”相同。
解决方案
你可以做一些像可怕的事情:
=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)))))
推荐阅读
- spring-boot-admin - spring boot 管理日志文件显示 e.headers ['content-range']
- angular - VSTS 轰炸 NPM 安装?
- hadoop - 在 hadoop 安装期间无法运行纱线
- python - Parallels VM 中 Django 应用的 Ghost NoReverseMatch 错误
- rust - 如何根据库功能设置依赖项的功能?
- workflow - Alteryx:如何删除具有特定名称的列?
- vue.js - 组件上的 Vuex
- excel - 使用 Intersect 在工作表之间复制数据
- go - 为什么这个 go 程序在它应该完成打印后仍然打印?
- matlab - 从外部获取内部曲线