高手请进:EXCEL如何自动识别数字和字母,并自动取位数。

EXCEL 如何用函数命令分辨:BC123456ED ,B123456E 从第一个数字开始识别,若第六个数字后有两个字母,则取数字及后面的第一个字母,如:BC123456ED 取123456E ;若第六个数字后只有一个字母,则只提取数字,如:B123456E取123456。请高手作答。

=MID(LEFT(A1,LEN(A1)-1),MIN(FIND({0,1,2,3,4,5,6,7,8,9},LEFT(A1,LEN(A1)-1)&"0123456789")),LEN(LEFT(A1,LEN(A1)-1)))

回复 paulf101:你原来没说有这种情况啊,稍改一下就行了,思路是一样的
=LEFT(MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),LEN(A1)),MAX(LEN(MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),LEN(A1)))-1,6))追问

谢谢耐心解答!以上条件不变,(1)若识别的字符串左边第一位是数字而不是字母,则提取数字后向右的字母提取第一位字母,例如568748U,即提取后的结果仍是568748U;(2)若字符串左边开始第一个无论是字母还是数字,数字向右第一个字母是A或B,则同时提取数字和字母A或B ,如568748AC ,提取结果为568748A ,568748B提取结果为568748B。以上所有条件要求同时满足,这种情况该怎么处理呢?

追答

你总结的条件好乱,我觉得应该换个思路,你要的结果只有两种:取6数,或取6数+1字
只有两种条件下取6数:
1. 6数结尾,或者
2. 6数+1字结尾,且结尾不为“A”或“B”,且开头为字母
其余情况都是取6数+1字
=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),IF(ISNUMBER(VALUE(RIGHT(A1,1))),6,IF(AND(ISNUMBER(VALUE(LEFT(RIGHT(A1,2),1))),RIGHT(A1,1)"A",RIGHT(A1,1)"B",NOT(ISNUMBER(VALUE(LEFT(A1,1))))),6,7)))
另外,数字都是6位且连续的吧?。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-01
数组函数,三键结束

=-LOOKUP(,-MID(A1,MIN(FIND(ROW($1:$10)-1,A1&5^19)),ROW($1:$20)))&IF(ISNUMBER(-LEFT(RIGHT(A1,2),1)),"",LEFT(RIGHT(A1,2),1))追问

继续增加一下难度,若识别第一位是数字而不是字母,则提取数字后面的字母均保留一位字母,例如568748U,则提取后的结果仍是568748U ,怎么处理?

第2个回答  2012-02-01
有一个函数是这样的 具体的记不清了 好像是C语言的 你在找找吧
相似回答