EXCEL 单元格中函数取值

比如在表一中A列是一列类似这样的单元格:1524-1854[+]。 我怎么样能提取出"-"这个符号后的1854这个数值在另外一列中。难点在于这一列当中还有类似这样的单元格:888-888需要取值888、1025-654[-]需要取值654。 求大神求高手在线等。

公式:

=IF(ISERROR(FIND("[",A1,1)),MID(A1,FIND("-",A1,1)+1,LEN(A1)-FIND("-",A1,1)),MID(A1,FIND("-",A1,1)+1,FIND("[",A1,1)-FIND("-",A1,1)-1))



追问

这个。。。能解释一下么?

追答

按照你的说法,判定:
1)只有“-”这个后面的部分,亦即从字符串的中间截取到字符串尾,因此,用MID函数;但是,
2)你给的有的字符串的尾部可能有“[+]”等情况出现,因此,需要判定字符串中是否包括,我用FIND函数查找是否包括“[”去实现;如果没有的话,则返回#VALUE这个错误值,因此,我用ISERROR去判断是否找到;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-10

=IF(ISERROR(FIND("[",A1)>1)=FALSE,MID(A1,FIND("-",A1)+1,FIND("[",A1)-1-FIND("-",A1)),MID(A1,FIND("-",A1)+1,LEN(A1)-FIND("-",A1)))

 

第2个回答  2013-12-10
如果中间的连接符号都是为“-”,可以“数据”——“分列”——分隔符号——其他,用“-”,确定即可。可以多分列几次。
第3个回答  2013-12-10
B1
=-LOOKUP(,-MID(A1,FIND("-",A1)+1,ROW($1:$9)))
下拉追问

LOOKUP函数不是很懂 能解释一下整条函数的原理么?

追答

FIND("-",A1)+1搜索“-”后数据的起始位置。

ROW($1:$9),返回{1,2,3……9}九个数字。
MID(A1,位置数,{1,2……9},取A1指定的位置开始的1至9个字符。前面加上“-”将数据变为负值,文本转为错误值。

LOOKUP(,……,实际上是LOOKUP(0,……,即在前面公式取得的负值和错误值组成的数组中,搜索0值,LOOKUP会自动区域最后一个负值(即MID取得的最多位数字的负值)。最前面的“-”将负值转为正值。

本回答被提问者采纳
相似回答