如何从行列表中随机选择,排除相邻列中具有特定值的行

时间:2014-11-10 10:35:59

标签: random google-sheets excel-formula formulas gs-vlookup

我正在尝试制作一个随机发生器,从卡片列表中挑选随机卡片(来自游戏),但我希望能够输入一些参数来过滤掉某些卡片子集。可以说每张卡都有2种类型的子集,<Rarity><Colour>

到目前为止,我将我的生成器设置为使用Google Sheets上的公式,如下所示:

     A         B         C            D             E          F         G
1  Card    <Rarity>   <Colour>  <Filter Rarity>    Card    <Rarity>   <Colour>
===============================================================================
2  Blah1    Common     Blue           X              <Generator formulas>
3  Blah2    Common     Red            X              <Generator formulas>
4  Blah3    Uncommon   White          X              <Generator formulas>
5  Blah4    Legendary  Green          X              <Generator formulas>

在最左边的三列是具有各自细节的卡片。我想要输入所有D值的<Rarity>列,我希望我的公式在从A,B,C列中随机选取时忽略。

E,F,G列中的代码如下:

E
=INDEX($A$2:$A$537,LARGE(MATCH(ROW($A$2:$A$537),ROW($A$2:$A$537))*NOT(COUNTIF($E$1:E1,$A$2:$A$537)),RANDBETWEEN(1,ROWS($A$2:$A$537)-ROW(A1)+1)))

F and G just vlookups to return the values in columns B and C.
=vlookup(E2,$A$2:$C$760,2,FALSE)

我将这个公式从我以前做过的其他公式中拼凑出来,所以我不得不回去试图弄清楚如果A中的任何一张牌都有{{1 }}匹配B中列出的那个,那么就不应该选择它们。但我不知道最好把它放在哪里或如何。

1 个答案:

答案 0 :(得分:1)

一种方式:

=QUERY(FILTER({A2:C537,RANDBETWEEN(SIGN(ROW(A2:A537)),1E+308)},ISNA(MATCH(B2:B537,D2:D,0))),"select Col1, Col2, Col3 where Col1 != '' order by Col4 limit 10",0)

这会附加一列随机数,过滤掉不会出现在D列中的数字,根据随机数列对前3列进行排序,以及&#34;限制10&#34;允许您指定随机选择的卡数。