Как постоянно обновлять значение из функции ImportXML - PullRequest
0 голосов
/ 13 мая 2019

В Google Sheets у меня есть электронная таблица с более чем 150 функциями importXML.Я использую эту формулу для извлечения просмотров YouTube из прямых трансляций из моей организации за последний год.Иногда, когда электронная таблица открыта и функция importXML обновляется, она будет отображать #ERROR, пока не обновится снова (в этот момент она вернет значение без ошибок).Он будет отображать #ERROR только в нескольких случайных ячейках каждый раз, а остальные числа обновляются без проблем.И обычно, если я подожду около 5 минут, он снова обновится, и ячейки с #ERROR вернут фактическое значение.Хотя досадно, что некоторые ячейки в этой точке, которые уже имели действительные значения, теперь случайным образом возвращают # ОШИБКУ.

Я полагаю, что мог бы решить эту проблему, если бы я мог дать команду ячейке отображать последнее обновленное число вместо #ERROR.Как я могу заставить Google Sheets обновлять статическое значение вместо того, чтобы полагаться на функцию обновления при каждой загрузке листа?

Пример: в последний раз, когда лист обновлялся в строке 30, число было равно 3045.Но я обновил страницу, и теперь она показывает #ERROR в конце строки 30.

Вместо #ERROR, как я могу заставить лист отображать последнее значение (3045), пока формула не обновится, не возвращаяошибка.Допустим, сейчас значение составляет 3047.Так что в идеале формула будет отображать 3047, пока она не обновится снова, и мне больше никогда не придется видеть этот противный #ERROR.

Я нашел способ заставить формулу отображать '0' вместо #ERROR, и я вручную ввел последнее обновленное число в нескольких проблемных ячейках, но это не автоматическийрешение.

Чтобы формула отображала «0» вместо #ERROR, я добавил оболочку =IFERROR вокруг формулы.Я хотел бы использовать эту оболочку для отображения последнего обновленного номера вместо "0"

Основная формула:

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

Основная формула с ИФЕРРОМ:

=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 "

Ожидается: последнее обновленное число отображается в ячейке вместо # ОШИБКА

Результаты: ячейка просто отображается // @ last, когда возвращается с ошибкой.

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Возможно, вы можете попытаться заменить метод вместо значения при возникновении IFERROR, что означает, что вы можете попытаться выполнить importxml () еще раз, как только вы получите ошибку, что-то вроде:

= ЕСЛИОШИБКА (ImportXML (), ImportXML ());

или, может быть, попробуйте дважды:

= ЕСЛИОШИБКА (ImportXML (), ЕСЛИОШИБКА (ImportXML (), ImportXML ()))

0 голосов
/ 13 мая 2019

в Google Sheets нет параметра //@last. Лучше всего использовать пробел IFERROR, например:

=IFERROR(formula())

в противном случае вам понадобится скрипт, который будет периодически архивировать весь ваш лист на другой лист, а затем вы можете вызвать его через 2-й параметр IFERROR

...