excel中取出字符串中的数字
1.数据 - "a12345y" 如何自动撷取其中的数字
2.数据 - "12345" 如何自动只撷取其中间三个的数位(即234)放於其它格上
如果你的数据有固定的长度和格式,公式可以简单些,如,前后各有1位字母:
A1="a12345y"
B1=Mid(A1,2,5)
如果前后字母个数不固定:
B1=MID(A1,MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),),MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))-MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),)+1)
数组公式,按Ctrl+Shift+Enter三键结束。
1、截取字符串中的一部分,用函数MID()。
A1="a12345y"
公式最外层是Mid()函数,该函数的格式是:
Mid(文本,开始位置,长度)
对应公式是:
MID(A1,MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),),MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))-MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),)+1)
2、长度=末位置-首位置+1。
其中MATCH()公式有不同的两个:
文本A1中第1个数字所在的位置:MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),)
文本A1中最后1个数字所在的位置:MATCH(0,0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))
两个公式不同之处,在于最后一个逗号。公式什么意思先别管,你只要知道:
长度=最后1个数字的位置-第1个数字的位置+1
本例中:6-2+1=5,数字长度为5。
3、拆散字符串。
下面公式取出字符串中的每一粒字符:
MID(A1,1,1)="a"
MID(A1,2,1)="1"
……
MID(A1,6,1)="5"
MID(A1,7,1)="y"
下面公式返回的是拆散后的一串字符(数组):
MID(A1,{1;2;3;4;5;6;7},1)={"a";"1";"2";"3";"4";"5";"y"}
其中{1;2;3;4;5;6;7}用ROW(INDIRECT("1:"&LEN(A1)))计算所得。
这是数组公式中的一个基本技巧,如果还不懂,请从固顶的帖子中到并学习它。
在编辑栏中,请用鼠标选取 MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1) 然后按F9可以看到上面的结果。
4、0乘以任何数都得0吗?
你一定不会怀疑。
还是在编辑栏,请继续用鼠标选择:
0*{"a";"1";"2";"3";"4";"5";"y"},或者选择:
0*MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),按F9,结果显示为:
{#VALUE!;0;0;0;0;0;#VALUE!}。真的不是“都得0”。
里面除了0,还有错误值。个数与原来数组元素的个数相同。
0乘以任何数还是得0。
因为前后两个"a"和"y",根本不是数,所以返回#VALUE!。
0*{"a";"1";"2";"3";"4";"5";"y"}的目的使结果简单化,数字变0,字符变#VALUE!。
为什么这样做?请听下回分解。
5、Match()会告诉你,第1个0和最后一个0的位置。
第1个0的位置:Match(0,{#VALUE!;0;0;0;0;0;#VALUE!},0)
百度文库 - 让每个人平等地提升自我excel计算字符串长度最后1个0的位置:Match(0,{#VALUE!;0;0;0;0;0;#VALUE!})
百度文库 - 让每个人平等地提升自我如果不明白,请花点时间看一下关于MATCH()的帮助。
这个位置,其实也就是{"a";"1";"2";"3";"4";"5";"y"}中"1"和"5"的位置,也就是"a12345y"中1和5的位置。
现在再返回开头看公式:
Mid(文本,开始位置,长度)
明白了吗?
对公式的一点补充:数字、字母混合组合的情况,本公式不适用,如:从"a123b45y"中提取123或45。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论