Есть ли скрипт для обхода 50000 символов для формулы в ячейке? - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть эта (безумно) длинная формула, которую мне нужно запустить в Google Sheets, и я столкнулся с ошибкой ограничения:

Возникла проблема

Ваш ввод содержит большечем максимум 50000 символов в одной ячейке.

Есть ли обходной путь для этого?


моя формула:

=ARRAYFORMULA(SPLIT(QUERY({B!A1:A100; ........ ; CA!DZ1:DZ100}, 
 "select * where Col1 is not null order by Col1 asc", 0), " "))

полная формула: pastebin.com / raw / ZCkZahpw

извинения за Pastebin ... Iздесь также есть несколько ошибок:

примечание 1: из-за того, что это длинная формула, выходные данные должны иметь размер ~ 100 строк × 3 столбца note 2: , пока мне удалось обойти JOIN / TEXTJOIN для 50000+символов и 500000 лимитов для общего числа ячеек

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

ОБНОВЛЕНИЕ:

Мне удалось ввести до 323461 символов в виде формулы!используя CTRL + H, где я заменил простую формулу =SUM(1) своим огромнымформула из этого ответа: https://webapps.stackexchange.com/a/131019/186471

___________________________________________________________

после некоторого исследования, похоже, что нет никакого обходного пути, чтобы извлечь это из.

рекомендуемая экономиякоторые были предложены (сокращение: A!A:A, удаление: select *, asc, сокращение: "where Col1!=''order by Col1") немного уменьшило его, а остальное было разделено на две формулы в решении массива VR {}.

0 голосов
/ 17 февраля 2019

Существует ли скрипт для обхода 50000 символов для формулы в ячейке?

Если длина {B!A1:A100; ........ ; CA!DZ1:DZ100} превышает 50 тысяч символов, рассмотрите возможность создания пользовательской функции, которая создаетмассив для вас.Вы можете «жестко закодировать» ссылки или перечислить их в виде текста в диапазоне, который будет прочитан вашим сценарием.

Тогда полученная формула может выглядеть следующим образом:

 =ARRAYFORMULA(SPLIT(QUERY(MYCUSTOMFUNCTION(), 
 "select * where Col1 is not null order by Col1 asc", 0), " "))

иликак это

 =ARRAYFORMULA(SPLIT(QUERY(MYCUSTOMFUNCTION(A1:A1000), 
 "select * where Col1 is not null order by Col1 asc", 0), " "))

(при условии, что у вас есть 1000 ссылок).

Пользовательская функция работает, потому что она на стороне Google Sheets вместо формулы, которая превышает предел содержания ячейки, она будетиспользуйте только несколько символов и потому что, используя передовые практики, можно сделать так, чтобы для них требовалось менее 30 секунд.

Стоит отметить, что если используется вариант MYCUSTOMFUNCTION() (без аргументов), он будет пересчитан только при открытии электронной таблицы, но вариант MYCUSTOMFUNCTION(A1:A1000) (со ссылкой на диапазон в качестве аргумента) будетпересчитывается каждый раз, когда ячейка в ссылке на диапазон изменяется.

Ссылки

...