{"18375":"only fit 2008 year"},{"18396":"only fit 2008 year"},{"19489":"only fit 2008-2009 year"},{"19826":"only fit 2008 year"},{"18407":"only fit 2008 year"},30993,26836,{"26556":"only fit 2008 year"},{"25455":"only fit 2008-2012 year"}用公式提取出18375 18396 19489 19826 18407 30993 26836 26556 25455,最好得出的数值,每个都分别占一个单元格
楼主想要的功能,可以使用VBA程序代码实现。(当然,如果不是大量的数据处理,写VBA程序确实有点不划算)
(一)VBA程序代码如下:(程序运行之前请做好数据备份,以免丢失)
Sub Instr_Mid()(二)VBA程序的运行结果如下:(写代码不易,望笑纳)
举例,要从excel第一列中截取CD的数值7.382,即A1单元格中第4位参数到第8位参数之间位数为5位(小数点也占一位)的一段参数。
在一空白单元格里输入MID公式,=MID(text,start-num, num-chars)。在这里的例子里,text就是要截取的单元格地址即A1,start-num是A1中被截取的7.382所在的开始位数,即第4位,num-chars即7.382的总位数,共5位,所以在空白单元格内输入MID公式,=MID(A1,4,5)。按ENTER回车,即可得到7.382。
下拉自动复制公式,即可得到第一列所有的CD数值。
如果要从单元格内左起第1位开始截取字符,则用LEFT公式,如图所示,即=LEFT(A1,10),意思是提取A1单元格中从左起第1位字符起到第10位字符结束,即截取了CD:7.382mg。
同理,如果要从单元格内右起第1位开始截取字符,则用RIGHT公式,如图所示,即=RIGHT(A1,15),意思是提取A1单元格中从右起第1位字符起到第15位字符结束,即截取了TTX:0.2456mg/L。
假如你这个数据在A1单元格,在B1单元格输入公式=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"2008",""),"2009",""),"2012",""),"{",""),"}",""),"only fit",""),"year",""),"""",""),"-","")," ",""),":","")
在C1单元格输入公式=--TRIM(MID(SUBSTITUTE($B1,",",REPT(" ",99)),99*COLUMN(A:A)-98,99))
C1单元格为数组公式,三键结束,向右横拉至出现错误符号#VALUE!为止。
如图:
追问年份是不确定的不能那样替换,还有可以下拉吗?
追答用SUBSTITUTE替换掉是最省事的方法,如果还有其它年份,在嵌套几层上去就可以了。另外,C1单元格公式如果要下拉,将公式改成=--TRIM(MID(SUBSTITUTE($B$1,",",REPT(" ",99)),99*ROW(A1)-98,99))
本回答被提问者和网友采纳