A表中A1格辩闹汪内容为X-059,A2格内容弯汪为X-01,现在我想在B表的A1格中只,059,A2格只写01,我编辑了一个公式如下:=IF(ISNUMBER(MID(A表!A1,LEN(A表!A1)-2,1))),RIGHT(A表!A1,3),IF(ISNUMBER(MID(A表!A1,LEN(A表!A1)-1,1)),RIGHT(A表!A1,2),RIGHT(A表!A1,1)))显示的结果B2表中A1为9,A2为1,请问为什么? 首先公式多了一个反括号应写为=IF(ISNUMBER(MID(A表!A1,LEN(A表!A1)-2,1)),RIGHT(A表!A1,3),IF(ISNUMBER(MID(A表!A1,LEN(A表!A1)-1,1)),RIGHT(A表!A1,2),RIGHT(A表!A1,1))) 其次用函数LEFT,RIGHT,MID等得出的值是文本型数值,不是数值如:MID(A表!A1,LEN(A表!A1)-2,1)=MID("X-059",5-3,1)=MID("X-059",3,1)="0"即在"X-059"字符串中从第三位起取一位字符即得出"0",这是一个文本的0,所以ISNUMBER("0")判定得出的不是数值是文本,所以返回IF(ISNUMBER(MID(A1,LEN(A1)-1,1)),RIGHT(A1,2),RIGHT(A1,1)) MID(A1,LEN(A1)-1,1)=MID("X-059",5-1,1)=MID("X-059",4,1)="5"所以ISNUMBER("5")判定得出的不是数值是文本,所以返回RIGHT(A1,1),即取"X-059"最后一个字符"9" 公式应写成=IF(ISNUMBER(--MID(A表!A1,LEN(A表!A1)-2,1)),RIGHT(A表!A1,3),IF(ISNUMBER(--MID(A表!A1,LEN(A表!A1)-1,1)),RIGHT(A表!A1,2),RIGHT(A表!A1,1)))用两个负号将文本数值转为数值,但这样携仔的公式太不科学了,如果字符串是"X-23456",那公式不是要写的很长,建议如下: 公式可以简写成=RIGHT(A表!A1,LEN(A表!A1)-2)或=RIGHT(A表!A1,LEN(A表!A1)-FIND("-",A表!A1))比如B表的A1格子里填写了下面的函数=SUM(C1:C10),其最终的结果是50A2格子里填写=ISNUMBER(A1)结果还是FALSE我不明白为什么会是这样 这样的问题是不会出现的,你检查一下A1的公式是不是 =SUM(C1:C10),或者其单元格格式是不是被设置成文本格式了,得出结果其实是:公式变成文本公式了,并不会计算出结果
标签:ISNUMBER,函数