Как использовать вывод формулы массива в последующих вычислениях? - PullRequest
1 голос
/ 23 октября 2019

У меня есть лист Google, где я получаю продолжительность видео на YouTube следующим образом:

=REGEXEXTRACT(IMPORTXML(A2,"//*[@itemprop='duration']/@content"),"PT(\d+)M(\d+)S")

Это дает мне две ячейки с двумя значениями (минуты и секунды). Тем не менее, я хочу выполнить дальнейшие вычисления над ними (умножить минуты на 60 и добавить секунды). Как я могу «получить доступ» к этим значениям внутри функции, если вообще есть?

Ответы [ 2 ]

2 голосов
/ 23 октября 2019
  • Вы хотите получить длительность как единицу секунды.
  • Вы хотите добиться этого, используя встроенные формулы электронной таблицы.

Еслимое понимание правильное, как насчет этих примеров формул?

Пример формулы:

=VALUE(REGEXREPLACE(IMPORTXML(A2,"//*[@itemprop='duration']/@content"),"PT(\d+)M(\d+)S","00:$1:$2")*24*3600)
  • В этом примере формулы ячейка "A2" имеет URL-адрес типа https://www.youtube.com/watch?v=###.
  • Полученное время продолжительности преобразуется в формат времени, а значение извлекается как секунда.
    • Например, когда IMPORTXML(A2,"//*[@itemprop='duration']/@content") возвращает PT1M10S, VALUE(REGEXREPLACE("PT1M10S","PT(\d+)M(\d+)S","00:$1:$2")*24*3600) возвращает 70.
    • Даже если время превышает 1 час, например, значение типа PT123M45S возвращается. И =VALUE(REGEXREPLACE("PT123M45S","PT(\d+)M(\d+)S","00:$1:$2")*24*3600) возвращает 7425.

Ссылки:

Если я неправильно понял ваш вопрос, и это был не тот результат, который вы хотите, я приношу свои извинения.

Добавлено:

Как другой шаблон, еслиВы хотите использовать =REGEXEXTRACT(IMPORTXML(A2,"//*[@itemprop='duration']/@content"),"PT(\d+)M(\d+)S"), как насчет следующей формулы?

Пример формулы:

=QUERY(ARRAYFORMULA(VALUE(REGEXEXTRACT(IMPORTXML(A2,"//*[@itemprop='duration']/@content"),"PT(\d+)M(\d+)S"))),"SELECT Col1*60+Col2 label Col1*60+Col2 ''")
  • В этой формуле используются значения из массива и рассчитываются.
0 голосов
/ 23 октября 2019

или как это:

=TEXT(VALUE("00:"&SUBSTITUTE(REGEXREPLACE(
 IMPORTXML(A1, "//*[@itemprop='duration']/@content"), "PT|S", ), "M",":")), "[ss]")*1

или самое короткое:

=REGEXREPLACE(IMPORTXML(A1,"//*[@itemprop='duration']/@content"), 
 "PT(\d+)M(\d+)S", "00:$1:$2")*86400
...