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))