电子表格中的公式错误

时间:2012-07-24 08:15:21

标签: spreadsheet google-sheets

我有一个包含以下公式的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)))

由于

1 个答案:

答案 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]",""))