В Google Sheets как я могу выбрать список уникальных слов из основного списка слов и отобразить результаты в сетке 5x5? - PullRequest
1 голос
/ 30 апреля 2020

У меня есть 25 ячеек в сетке 5x5, которые все в настоящее время имеют формулу:

=lookup(randbetween(1,400),'Word list'!$A$1:$B$400)

Есть ли корректировка формулы или кода, который я могу включить, который не позволит этим ячейкам выбрать одни и те же случайные слова? Необходимый результат - список из 25 уникальных случайных слов из основного списка слов. Слова не могут повторяться и должны отображаться в сетке 5x5.

1 Ответ

3 голосов
/ 30 апреля 2020

Я нашел ответ на ваш вопрос здесь: 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,))  
...