Random 如何从行列表中随机选择,不包括相邻列中具有特定值的行

Random 如何从行列表中随机选择,不包括相邻列中具有特定值的行,random,google-sheets,excel-formula,formulas,gs-vlookup,Random,Google Sheets,Excel Formula,Formulas,Gs Vlookup,我正在尝试制作一个随机生成器,从一张牌列表(从游戏中)中选择随机牌,但我希望能够输入一些参数来过滤掉某些牌子集。假设每张卡有两种类型的子集,一种是,另一种是 到目前为止,我将生成器设置为在googlesheets上使用公式,如下所示: A B C D E F G 1 Card <Rarity> <Colour> <Filter Ra

我正在尝试制作一个随机生成器,从一张牌列表(从游戏中)中选择随机牌,但我希望能够输入一些参数来过滤掉某些牌子集。假设每张卡有两种类型的子集,一种是
,另一种是

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

     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>
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
中的任何卡在
B
中有一个值与
D
中列出的值匹配,则不应拾取它们。但我不知道该把它放在哪里或怎样放。

一种方法:

=QUERY(FILTER({A2:C537,randtween(SIGN(ROW(A2:A537)),1E+308},ISNA(MATCH(B2:B537,D2:D,0)),“select Col1,Col2,Col3其中Col1!=”,order by Col4 limit 10,0)


这将附加一列随机数,过滤掉D列中没有出现的随机数,根据随机数列对前3列进行排序,并且“限制10”允许您指定要随机选择的卡数。

首先感谢您抽出时间。我不知道GoogleSheets可以将GoogleAPI语言集成到querry中!这似乎是一件多才多艺的事情!如果将C列中的变量写入D列,是否也可以将其集成到筛选中?就像我在D列中写下我希望过滤掉的颜色和稀有物一样?啊,我算出了,我只是在过滤条件中添加了另一个
ISNA(匹配(C2:C537,D2:D,0))
。这是惊人的直截了当。非常感谢你的知识!这个解决方案是可行的,但是如果使用太多的变量作为排除项,那么查询返回的列表将被破坏,并且返回的条目数低于限制。例如,我不能过滤掉除1之外的所有颜色,并让它返回超过19个条目,尽管有几百个条目可用。是不是只是在列表中循环一次,然后挑出的条目太少了?啊,事实上,问题是我还将这个公式应用到了一个比53779个条目大得多的列表中,事实上,它是有效的。再次感谢。