1

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

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

示例:上次更新第 30 行的工作表时,数字为 3,045。但我刷新了页面,现在它在第 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。

4

3 回答 3

0

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

=IFERROR(formula())

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

于 2019-05-13T19:53:28.450 回答
0

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

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

减少了我的大部分错误计算。我也在单元格旁边添加了一个复选框。如果值 = TRUE,则 importxml。错误>“”。手动勾选,取消勾选刷新。

我不是编码员,如果有人有一个脚本解决方案,它可以简单地运行具有“刷新”备注的指定单元格范围,并自动执行 UNTICK 复选框的任务并随后重新 TICK,应该可以解决问题。

于 2020-01-02T03:22:24.940 回答
0

也许您可以在 IFERROR 发生时尝试替换方法而不是值,这意味着您可以在收到错误后再次尝试 importxml() ,例如:

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

或者尝试两次:

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

于 2019-05-14T14:53:49.750 回答