ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: shslxsw

[已解决] 拆分物业地址、单元号、室号

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-1-26 10:34 | 显示全部楼层

分析一下A列是数据,最后一个都是文字,文字前是数字,所以就先找到A列第一个的最后一个数字,

TA的精华主题

TA的得分主题

发表于 2008-1-26 10:36 | 显示全部楼层

=LOOKUP(9999,--RIGHT(LEFT(A1,LEN(A1)-1),ROW($1:$4)))

绿底部分,就是把A列单元格提出最后一个文字,因为数据里最后都是只有一个文字

TA的精华主题

TA的得分主题

发表于 2008-1-26 10:38 | 显示全部楼层

=LOOKUP(9999,--RIGHT(LEFT(A1,LEN(A1)-1),ROW($1:$4)))

=LOOKUP(9999,--RIGHT("爱国路301弄16号902",ROW($1:$4)))

而且我们发现,单元格最后数字都是不超过4位数的,所以红色部分,就是要把提出最后一个文字后返回的结果,从右边开始分别提取1、2、3、4个数,即返回{"2";"02";"902";"号902"}

TA的精华主题

TA的得分主题

发表于 2008-1-26 10:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

=LOOKUP(9999,--RIGHT(LEFT(A1,LEN(A1)-1),ROW($1:$4)))

绿底部分的作用是什么呢?我们知道,--就是把文本转换成数值,而上边RIGHT函数返回的是{"2";"02";"902";"号902"},这些都是文本,使用--,就是把这些文本转换成数值,具体为什么要转换成数值,暂且放着,先记住加入后返回的结果{2;2;902;#VALUE!}。

[此贴子已经被作者于2008-1-26 10:41:46编辑过]

TA的精华主题

TA的得分主题

发表于 2008-1-26 10:44 | 显示全部楼层

根据LOOKUP函数的查询策略,是要找到一个数组里不大于那个关键字的最接近的数,所以这个就是为什么14楼的要把文本转换成数值的原因,而且LEFT、RIGHT、MID这三个函数返回的都是文本型,所以得先把文本型转换为数值型

TA的精华主题

TA的得分主题

发表于 2008-1-26 10:45 | 显示全部楼层

=LOOKUP(9999,--RIGHT(LEFT(A1,LEN(A1)-1),ROW($1:$4)))

为什么使用的是9999这个数?因为前面说过,截取的是1-4位数,而最大的四位数就是9999,这样就可以保证得到单元格的最后一个数值了。

TA的精华主题

TA的得分主题

发表于 2008-1-26 10:47 | 显示全部楼层

其实根据数据的实际,我们还可以使用别的公式替代。

观察发现,最后一个数都是在号与室之间的,所以就可以想到mid函数,而室都是放在最后的,所以只要确定号在这个单元格的位置,就可以提取出最后一个数。

TA的精华主题

TA的得分主题

发表于 2008-1-26 10:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
更加这个思路,求号的位置,就可以使用=FIND("号",A1)

TA的精华主题

TA的得分主题

发表于 2008-1-26 10:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

综合起来就是

=MID(A1,FIND("号",A1)+1,LEN(A1)-FIND("号",A1)-1)

绿底部分是求号的位置,即从什么地方开始截取,别忘记了+1,因为是要从号后开始截取的

红底部分就是要截取多少个,别忘记了后边的-1,因为最后一个是室,不需要截取

TA的精华主题

TA的得分主题

发表于 2008-1-26 10:54 | 显示全部楼层

C单元格的还是和D单元格差不多的做法

=LOOKUP(9999,--RIGHT(LEFT(A1,LEN(A1)-2-LEN(D1)),ROW($1:$4)))

=LOOKUP(9999,--RIGHT("爱国路301弄16",ROW($1:$4)))

=LOOKUP(9999,--{"6";"16";"弄16";"1弄16"})

=LOOKUP(9999,{6;16;#VALUE!;#VALUE!})

=16

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-15 16:27 , Processed in 0.043806 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表