请教如何在excel单元格中提取特定的数值?

表格(逗号分隔值文件)
a1 家庭食养宝典——女性篇;刊号;9787513214278
a2 9787811362169
a3 极地精灵,26.00元,无,极地精灵,大连出版社,9787550505582,2013年9月
a4 豪尔绍尼评传(理性的沉思)/诺贝尔经济学奖获奖者评传丛书,黄涛著,11.80元,豪尔绍尼评传(理性的沉思)/诺贝尔经济学奖获奖者评传丛书,山西经济,7806361421,1999年10月
想要的结果是(就是把书号提取出来放在一列里)

b1 9787513214278
b2 9787811362169
b3 9787550505582
b4 7806361421
每个单元的长度不一样,逗号(分号)个数也不一样,尝试过用分列,但是分列之后要的答案不在一列里,没发统计。
盼解答给个方案和怎么做,谢谢

分2步完成可以吗?

在B1输入公式:

=MID(A1,MAX(IF(((CODE(MID(A1&"12345",ROW(INDIRECT("1:"&LEN(A1))),1))=59)+(CODE(MID(A1&"12345",ROW(INDIRECT("1:"&LEN(A1))),1))=44))*(CODE(MID(A1&"12345",ROW(INDIRECT("6:"&LEN(A1)+5)),1))<58),ROW(INDIRECT("1:"&LEN(A1)))))+1,200)

摁SHIFT+CTLRL+回车结束公式的输入,将公式向下拉填充;

在C1输入公式:
=IF(ISNUMBER(FIND(",",$A1)),LEFT(B1,FIND(",",B1)-1),B1)

直接回车后将公式向下拉填充就可以了得到结果。

追问

公式好复杂看不懂,没看懂含义,不过非常接近想要的答案了,可能但是的数据样本不够全面,就是在书号后面有2个3个逗号的情况这个公式就不适用了。
例:a5 重庆市地图册,12.00元,成都地图出版社,重庆市地图册,成都地图出版社,7805449279,2006年01月,32
这个要怎么解决呢?

追答

B1改为:

=MID(A1,MAX(IF(((CODE(MID(IF(ISNUMBER(FIND("年",A1)),LEFT(A1,FIND("年",A1)),A1)&1/3,ROW(INDIRECT("1:"&LEN(A1))),1))=59)+(CODE(MID(IF(ISNUMBER(FIND("年",A1)),LEFT(A1,FIND("年",A1)),A1)&1/3,ROW(INDIRECT("1:"&LEN(A1))),1))=44))*(CODE(MID(IF(ISNUMBER(FIND("年",A1)),LEFT(A1,FIND("年",A1)),A1)&1/3,ROW(INDIRECT("6:"&LEN(A1)+5)),1))<58),ROW(INDIRECT("1:"&LEN(A1)))))+1,200)

 

C1公式不变。

追问

当开本在年号前面公式又不适用了,或者年号的书写形式改变
例如:重庆市地图册,12.00元,成都地图出版社,重庆市地图册,成都地图出版社,7805449279,32,2006年01月

极地精灵,26.00元,无,极地精灵,大连出版社,9787550505582,32开,2013-9-1

追答

又改下吧。

在B1输入公式:

=MID(A1,MATCH(1,((CODE(MID(A1&1/3,ROW(INDIRECT("1:"&LEN(A1))),1))=59)+(CODE(MID(A1&1/3,ROW(INDIRECT("1:"&LEN(A1))),1))=44))*ISNUMBER(--MID(A1&1/3,ROW(INDIRECT("2:"&LEN(A1)+1)),8)),)+1,200)

 

在C1输入公式:

=IF(ISNA(B1),A1,IF(ISNUMBER(FIND(",",$B1)),LEFT(B1,FIND(",",B1)-1),B1))

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-10-16
你这个 首先要把 前面的 非书号 的价格之类的数字去掉!
增加一个辅助列 C
C1 =IF(ISNUMBER(FIND("元",A3)),SUBSTITUTE(RIGHT(A3,LEN(A3)-FIND("元",A3)),",","F"),SUBSTITUTE(A3,",","F"))
B1 =LOOKUP(9E+307,--MID(C1,MIN(FIND(ROW($1:$10)-1,C1&1234567890)),ROW($1:$100)))
按住 ctrl 和shift键 再按回车……

这是 根据你贴出来的数据 中 前面有一部分有价格 后面有一部分有日期的情况进行的处理 其他情况 不知道所以 有可能不能完全符合需要……如有特殊情况 应该一并提出……总之 书号之前 不应该有数字!如果有数字 就要特殊处理……

祝你成功!
辅助列 如果 你出现特殊情况比较多的话 你可以使用替换的方式 把他们替换掉 然后再用提取数字的公式 提取……
比如 你要删除 元 之前的 就 查找里填写 *元 替换里什么也不填写……全部替换……其他的类似 只要最好是 只保留 书号 及其他 不影响的文字或者符号 即可……注意 逗号 如果 在连续的数字中间 那么它将被识别为 数字的一部分……所以 要把都好也替换成其他非数字符号!
第2个回答  2014-10-16
要用vba处理就简单些了
相似回答