如何从Google表格中的ImportXML函数永久更新值

时间:2019-05-13 19:08:56

标签: google-sheets spreadsheet google-sheets-formula

在Google表格中,我有一个包含150多个importXML函数的电子表格。在过去的一年中,我使用此公式从组织的实时流中提取YouTube观看次数。有时,当打开电子表格并刷新importXML函数时,它将显示#ERROR,直到再次刷新为止(此时它将返回没有错误的值)。每次只会在少数随机单元格上显示#ERROR,其余的数字也不会出现问题。通常,如果我等待约5分钟,它将再次刷新,带有#ERROR的单元格将返回实际值。尽管很烦人,但此时某些已经具有实际值的单元格现在将随机返回#ERROR。

我相信,只要我能命令单元格显示最近更新的数字而不是#ERROR,就可以解决此问题。如何让Google表格更新静态值,而不必每次加载表格时都依赖该函数刷新?

示例: 上次在第30行更新工作表的数量为3045。但是我刷新了页面,现在它在第30行的末尾显示#ERROR。

代替#ERROR,如何使工作表显示最后一个值(3,045),直到公式刷新而不返回错误。假设现在的值为3,047。因此,理想情况下,该公式将显示3,047,直到再次刷新为止,而我再也不需要看到令人讨厌的#ERROR。

我找到了一种使公式显示为'0'而不是#ERROR的方法,并且我在几个问题单元格上手动输入了最近更新的数字,但这不是自动解决方案。

要使公式显示为“ 0”而不是#ERROR,我在公式周围添加了=IFERROR包装器。我想使用此包装器显示最近更新的数字,而不是显示“ 0”

主要公式:

=value(REGEXREPLACE(text(importxml(F173,"//*[contains(@class, 'watch-view-count')]"),0)," view(s)?",""))

带有IFERROR的主公式:

=IFERROR(value(REGEXREPLACE(text(importxml(F173,"//*[contains(@class, 'watch-view-count')]"),0)," view(s)?","")),0)

带有IFERROR和“ // @ last”的主公式,不起作用

=IFERROR(value(REGEXREPLACE(text(importxml(F173,"//*[contains(@class, 'watch-view-count')]"),0)," view(s)?","")),"//@last")

使用“ // @ last”作为IFERROR值,而不是“ 0”

预期:最后更新的数字显示在单元格中,而不是#ERROR

结果:返回错误时,单元格仅显示// @ last。

3 个答案:

答案 0 :(得分:0)

Google表格中没有//@last参数。最佳做法是使用空白IFERROR,例如:

=IFERROR(formula())

否则,您将需要一个脚本,该脚本会定期将整个工作表存档到另一个工作表中,然后可以通过IFERROR的第二个参数进行调用

答案 1 :(得分:0)

也许当发生IFERROR时,您可以尝试替换该方法而不是值,这意味着一旦出现错误,您可以再次尝试importxml(),例如:

= IFERROR(importXML(),importXML());

或尝试两次:

= IFERROR(importXML(),IFERROR(importXML(),importXML()))

答案 2 :(得分:0)

我在同一问题的不同电子表格中有大约100个字段。 Google应该具有最后一个已知数字的缓存系统。

我没有在电子表格中使用链接的IFERROR刷新自身,而是在其他电子表格中仅使用重要的importXML单元复制了同一工作表。链接2。那里有IFERROR >>电子表格2 >> IFERROR >>电子表格3 >> IFERROR“刷新”-然后我知道所有3都失败了!顺其自然,所有3个相同的importxml单元极不可能同时失败。

减少了很多错误计算。我也在该单元格旁边添加了一个复选框。如果value = TRUE,则输入importxml。 FALSE>“”。手动勾选,取消勾选即可刷新。

不是编码人员,如果有人拥有可以简单地在具有“刷新”标记的单元格的指定范围内运行并自动执行UNTICK复选框并随后重新进行TICK的脚本解决方案,就可以解决问题。