我有一个包含以下公式的Google电子表格
=IFERROR(IF(AA3="","",MID((LEFT(AA3,LEN(AA3)-1)),FIND("|",AA3)+1,30)))
现在返回一个数字。
奇怪的是它在100%的情况下起作用并返回适当的数字,但是如果我尝试在几个奇数场合用这个数字计算新公式失败,告诉我“数字”不是数字。
实施例..
(-121|102) -121 102 -->the first is a combination which i then break apart into -121 and 102
复制公式,所有工作都是100%
然后我继续处理这些数字,在奇怪的情况下,公式告诉我“102”不是数字。
在示例输出下面..
(-121|102) -121 102 76.00
(-238|139) -238 139 #VALUE!
(-297|52) -297 52 395.73
(-127|201) -127 201 186.81
(-186|149) -186 149 336.89
(-141|120) -141 120 290.08
(-106|97) -106 97 #VALUE!
(-238|139) -238 139 #VALUE!
(-297|52) -297 52 #VALUE!
(-160|221) -160 221 290.06
(-197|200) -197 200 294.55
(-238|139) -238 139 #VALUE!
(-19|10) -19 10 #VALUE!
(-21|22) -21 22 323.83
我可以在公式中加入任何强制输出为数字的东西吗? =IFERROR(IF(AA3="","",MID((LEFT(AA3,LEN(AA3)-1)),FIND("|",AA3)+1,30)))
由于
答案 0 :(得分:1)
问题是由某些单元格中的“不可见”非数字字符引起的。如果列出其中一个无效数字的字符代码,例如示例输出中的第2行,您将看到第四个不可见字符,文本末尾有代码 8206 。您可以使用此公式来验证此事实(前提是单元格位于AA2
位置):
=CODE(MID(AA2,FIND("|",AA2)+4,1))
你应该能够使用正则表达式替换去掉非数字字符,如下所示:
=REGEXREPLACE(/* some text */,"[^0-9]","")
根据原始公式从一个文本单元格中提取第二个数值的有效公式将是:
=IF(AA2="","",REGEXREPLACE(MID(LEFT(AA2,LEN(AA2)-1),
FIND("|",AA2)+1,30),"[^0-9]",""))
但是,根据|
和)
的位置,我会建议使用更稳定的公式来识别第二个值:
MID(AA2,FIND("|",AA2)+1,FIND(")",AA2)-FIND("|",AA2)-1)
产生以下结果公式,以便从文本单元格中充分提取第二个数值:
=IF(AA2="","",REGEXREPLACE(MID(AA2,FIND("|",AA2)+1,
FIND(")",AA2)-FIND("|",AA2)-1),"[^0-9]",""))