Я нашел ответ на ваш вопрос здесь: https://support.google.com/docs/thread/11579830?hl=en, что в основном и было первым предложением TheMaster.
Это устраняет необходимость в VLOOKUP. Он берет весь список из 400 слов (в C1: C400) случайным образом сортирует его, а затем запрашивает его, чтобы выбрать первые 30 (случайных) слов. Он обновляется каждый раз, когда меняется лист. Формула, основанная на этом, будет выглядеть следующим образом:
=ArrayFormula( QUERY(
SORT( C1:C400 ,
RANDBETWEEN( SIGN( ROW( C1:C400 ) ) , 1E+293 ),
1 ) ,
"select * WHERE Col1 <> '' limit 30" ) )
Если ваш первоначальный список слов может содержать дубликаты, мы также можем добавить функцию UNIQUE перед запросом, чтобы избежать дубликатов.
Вот образец листа: https://docs.google.com/spreadsheets/d/1CA5ALjgxU8tOVqWMTT-CqXqdXl25TlWb73ynVAL61vw/edit?usp=sharing
Сообщите нам, если это не достигнет того, что вы хотите.
Редактировать: встретиться В соответствии с дополнительным требованием следующая формула делит диапазон из одного столбца (A1: A) на сетку значений / слов размером 5 x 5. Кредит Максиму Махрову. https://sheetswithmaxmakhrov.wordpress.com/2017/12/26/how-to-transpose-every-5-or-n-rows-from-one-column-to-multiple-columns/
=ArrayFormula(VLOOKUP(
COLUMN ( OFFSET( INDIRECT("A1") ,,,1,5) )
+
(ROW( INDIRECT("A1:A" & ROUNDUP( COUNTA(A1:A)/5 ) ) ) - 1) * 5,
{ROW(A1:A)-ROW(A1)+1,A1:A},
2,))