У меня есть таблица Google, содержащая несколько тысяч строк и два столбца в следующем формате:
У меня есть формула, которая повторяет каждый адрес электронной почты в отдельной строке n раз (где n = количество билетов). Таким образом, в приведенном выше примере [email protected] будет напечатан в 1 строке, [email protected] будет напечатан в 7 строках...
Формула, которая работает:
=ARRAYFORMULA(TRANSPOSE(SPLIT(JOIN("", ARRAYFORMULA(REPT(A2:A&"♦", B2:B))), "♦")))
Однако если во входной таблице слишком много строк данных, я получаю сообщение об ошибке: «Текстовый результат JOIN длиннее ограничения в 50 000 символов».
Есть ли способы обойти это ограничение?





Вы можете попробовать:
=let(Δ,index(match(,0/(A:A<>""))),
tocol(map(A2:index(A:A,Δ),B2:index(B:B,Δ),lambda(Σ,Λ,if (or(Σ = "",Λ = ""),,wraprows(Σ,Λ,Σ)))),1))
Надеюсь, кто-то еще предложит альтернативу. Если возможно, поделитесь тестовым листом (фиктивными данными), воссоздающим этот сценарий ошибки, чтобы мы могли протестировать напрямую и все такое. вы также можете использовать анонимный создатель пустых листов, если необходимо поделиться листом
Вот ссылка на таблицу, в которой используются случайно сгенерированные адреса электронной почты: docs.google.com/spreadsheets/d/… — Она отлично работает, когда «Общее количество адресов электронной почты в списке» меньше 3000, но затем перестает работать, когда она становится выше. В реальном мире мой лист будет содержать около 13 000 строк.
Извините, я только что заметил, что вы обновили свой ответ, я использовал его, и он отлично работает. Спасибо!
Вы можете сделать это в сценариях - просто используйте подходы getRange() и getValues(), а затем setValues() там, где вы хотите, чтобы они были напечатаны. Вы можете привязать действие к событию, чтобы можно было бежать по команде.
Эта формула работает, но, как и исходная формула, которую я использовал, она, похоже, ограничивается примерно 800 строками входных данных. Выдает следующую ошибку: Ссылка на ошибку не существует.