@Vlad-M

Как повторить массив N раз?

6140ff5d87447956134607.png
В столбце AG исходный массив(AG2:AG10) , в столбце AH массив который хочу получить на выходе(массив в столбце AG продублирован 3 раза). НО когда использую большую базу или вывожу много значение, то появляются ошибки на лимит формул.

Есть ли обходной путь или готовый скрипт?
С учетом что вводный массив не меньше 3000 строк, а на выход массив в 40000 срок.

Формулы которые пробовал, выдают ошибки:
=ТРАНСП(split(ПОВТОР(join(";",AG2:AG10)&";",9999),";"))
Количество символов в результате функции REPT превышает лимит (32000).
или
=ТРАНСП(split(ПОВТОР(join(";",AG2:AG20000)&";",11),";"))
Количество символов в результате функции JOIN превышает лимит (50000).

С такой формулой аналогичные ошибки.
=ArrayFormula(ТРАНСП(SPLIT(ПОВТОР(СЦЕПИТЬ(AG2:AG10&"~"),1000),"~")))
  • Вопрос задан
  • 461 просмотр
Пригласить эксперта
Ответы на вопрос 2
idShura
@idShura
=TRANSPOSE(split(rept(join(";";AG:AG)&";";3);";"))

1. Диапазон ячеек (массив)
2. Сколько раз нужно повторить
61419ea3d7b61141766349.png
Ответ написан
ProgrammerForever
@ProgrammerForever Куратор тега Google Sheets
Учитель, автоэлектрик, программист, музыкант
/**
* Дублирует массив
* Telegram - @ProgrammerForever
*
* @param {Range} arr Массив
* @param {number} count Сколько раз дублировать. По умолчанию 1
* @param {boolean} isFilter Указывает, нужно ли фильтровать строки исходного массива
* @param {number} column Номер столбца по которому надо фильтровать строки. По умолчанию 1.
* @return Дублированный массив
* @customfunction
*/
function array_repeat(arr, count=1, isFilter, column=1) {  
  if (isFilter){
    column = -1+column;
    arr = arr.filter(row=>row[column]);
  };

  // Вариант 1
  /*
  let outData = [];
  for(let i=0; i<=count; i++){
      outData = [...outData, ...arr];
  };
  */

  // Вариант 2, должен работать шустрее
  let outData = new Array(arr.length*count);
  for(let i=0; i<=arr.length*count; i++){
      outData[i]=arr[i%arr.length];
  };

  return outData;
}

По крайней мере 25к строк выдаёт
Демонстрационная таблица
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы