在 Google Sheets 中,我如何从主词列表中选择一个唯一的词列表,并在 5x5 网格中显示结果?

问题描述 投票:0回答:1

我有25个单元格在一个5x5的网格中,目前都有公式。

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

有没有调整公式,或者我可以加入的代码,以防止这些单元格选择相同的随机词? 所需要的结果是从一个主词列表中选出25个唯一的随机词。这些单词不能重复,应该在一个5x5的网格中显示。

google-apps-script google-sheets google-sheets-formula
1个回答
3
投票

我在这里找到了你问题的答案。https:/support.google.comdocsthread11579830?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.comspreadsheetsd1CA5ALjgxU8tOVqWMTT-CqXqdXl25TlWb73ynVAL61vwedit?usp=sharing。

如果没有达到你想要的效果,请告诉我们。

编辑:为了满足额外的要求,下面的公式将单列范围(A1:A)划分为一个5×5的值字网格。 归功于Maxim Makhrov。https:/sheetswithmaxmakhrov.wordpress.com20171226如何将每5-or-n-行--从一列到多列的转换。

=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,))  
© www.soinside.com 2019 - 2024. All rights reserved.