Google 工作表 SORTN 函数具有不匹配的范围大小,即使使用相同的函数来计算过滤器和计数
Google Sheets SORTN function has mismatched range sizes even though same function is used to calculate filter and counta
我一直在尝试创建一个函数来获取具有两个条件的随机数组,但运气不佳。
A3 是第一个条件(下拉值:Todos、Objeto、Local、Característica、Animal)和
B3 是第二个条件(下拉值:Todos、Sobrenome、Taverna、Loja Mágica)。这两种情况都会调用带有数据的第二个选项卡。
例如,当 A3 为“Todos”且 B3 为“Objeto”或 A3 为“Animal”且 B3 为“Taverna”时,我的函数有效。
但是,当 A3 和 B3 都是“待办事项”时,我的函数 returns“#N/A”并读取“SORTN 的范围大小不匹配。预期行数:999。列数:1 . 实际行数:148,列数:1."
函数庞大,嵌套了多个IF。这是我认为问题所在的简化版本:
=SORTN(
IF(
AND($A="Todos";$B="Todos");
FILTER(Substantivos!$A:$A;Substantivos!$C:$C<>$A;Substantivos!$E:$E<>$A;Substantivos!$F:$F<>$A;Substantivos!$G:$G<>$A)
)
;10;0;ARRAY_CONSTRAIN(RANDBETWEEN(ROW(Substantivos!$A:$A)^1;10000);COUNTA(
IF(
AND($A="Todos";$B="Todos");
FILTER(Substantivos!$A:$A;Substantivos!$C:$C<>$A;Substantivos!$E:$E<>$A;Substantivos!$F:$F<>$A;Substantivos!$G:$G<>$A)
)
);1);1)
我还用我的一些数据准备了一个虚拟 sheet:click here。
在我忘记之前,我使用分号作为函数分隔符。
谢谢!
使用:
=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))
我一直在尝试创建一个函数来获取具有两个条件的随机数组,但运气不佳。
A3 是第一个条件(下拉值:Todos、Objeto、Local、Característica、Animal)和 B3 是第二个条件(下拉值:Todos、Sobrenome、Taverna、Loja Mágica)。这两种情况都会调用带有数据的第二个选项卡。
例如,当 A3 为“Todos”且 B3 为“Objeto”或 A3 为“Animal”且 B3 为“Taverna”时,我的函数有效。
但是,当 A3 和 B3 都是“待办事项”时,我的函数 returns“#N/A”并读取“SORTN 的范围大小不匹配。预期行数:999。列数:1 . 实际行数:148,列数:1."
函数庞大,嵌套了多个IF。这是我认为问题所在的简化版本:
=SORTN(
IF(
AND($A="Todos";$B="Todos");
FILTER(Substantivos!$A:$A;Substantivos!$C:$C<>$A;Substantivos!$E:$E<>$A;Substantivos!$F:$F<>$A;Substantivos!$G:$G<>$A)
)
;10;0;ARRAY_CONSTRAIN(RANDBETWEEN(ROW(Substantivos!$A:$A)^1;10000);COUNTA(
IF(
AND($A="Todos";$B="Todos");
FILTER(Substantivos!$A:$A;Substantivos!$C:$C<>$A;Substantivos!$E:$E<>$A;Substantivos!$F:$F<>$A;Substantivos!$G:$G<>$A)
)
);1);1)
我还用我的一些数据准备了一个虚拟 sheet:click here。
在我忘记之前,我使用分号作为函数分隔符。
谢谢!
使用:
=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))