我一直在尝试创建一个函数来获得一个具有两个条件的随机数组,而不需要太多的运气。
A3是第一个条件(下拉值: Todos、Objeto、Local、Característica、Animal),B3是第二个条件(下拉值: Todos、Sobrenome、Taverna、Loja Mágica)。这两个条件都会调用包含数据的第二个选项卡。
例如,当A3为"Todos“,B3为"Objeto”,或者A3为"Animal“,B3为"Taverna”时,我的函数可以工作。
但是,当A3和B3都为"Todos“时,我的函数返回"#N/A”,并读取"SORTN具有不匹配的范围大小。预期行数: 999。列数: 1。实际行数: 148,列数:1。“
这个函数非常庞大,如果嵌套了几个函数。这是我认为问题所在的缩写版本:
=SORTN(
IF(
AND($A$3="Todos";$B$3="Todos");
FILTER(Substantivos!$A$2:$A;Substantivos!$C$2:$C<>$A$3;Substantivos!$E$2:$E<>$A$3;Substantivos!$F$2:$F<>$A$3;Substantivos!$G$2:$G<>$A$3)
)
;10;0;ARRAY_CONSTRAIN(RANDBETWEEN(ROW(Substantivos!$A$2:$A)^1;10000);COUNTA(
IF(
AND($A$3="Todos";$B$3="Todos");
FILTER(Substantivos!$A$2:$A;Substantivos!$C$2:$C<>$A$3;Substantivos!$E$2:$E<>$A$3;Substantivos!$F$2:$F<>$A$3;Substantivos!$G$2:$G<>$A$3)
)
);1);1)我还用我的一些数据准备了一个虚拟工作表:click here。
在我忘记之前,我使用分号作为函数分隔符。
谢谢!
发布于 2021-07-17 17:32:08
使用:
=ARRAYFORMULA(QUERY(SPLIT(QUERY(FLATTEN(IF(Substantivos!E2:G="";;
Substantivos!A2:A&"×"&PROPER(Substantivos!C2:C)&" Todos×"&PROPER(Substantivos!E1:G1)&" Todos×"&
RANDARRAY(ROWS(Substantivos!A2:A))*RANDARRAY(1; COLUMNS(Substantivos!E1:G1))));
"where Col1 is not null"); "×");
"select Col1
where Col2 contains '"&A3&"'
and Col3 contains '"&B3&"'
order by Col4
limit 10"; 0))

https://stackoverflow.com/questions/68417101
复制相似问题