我正在尝试计算溢出数组中非空白或 NA 的值

我正在尝试计算溢出数组中非空白或 NA 的值

我有一张表,在其中我使用创建了唯一列表

=UNIQUE(IF(Name1="A",Name2,""),FALSE,FALSE)

结果列表是一个溢出数组,顶部有一个空白(用于结果为假),#N/A 底部有一个空白(不确定为什么,但不是很重要)。

然后我想计算唯一列表,同时忽略顶部的空白和#N/A底部的。到目前为止,我只是使用=COUNTA(J3#)-2,但是有没有办法过滤计数或过滤唯一函数以删除这两个?

作为参考=Count(J3#)回报0,这就是我使用的原因=CountA

我考虑过一个=IFNA函数,让NA也变成"",但不会从计数中删除空格。不过,它可能会简化过滤函数。

答案1

这是一个可以尝试的示例,可能需要根据情况调整范围/单元格引用:

在此处输入图片描述


• 单元格中使用的公式D16

=SUM(--(UNIQUE(FILTER(C16:C20,IFNA(C16:C20,"")<>""))<>""))

或者,

=SUM(--(UNIQUE(FILTER(C16:C20,IFERROR((C16:C20,"")<>""))<>""))

与其使用COUNTA()ROWS()函数,不如使用,SUM()因为即使没有数据,也会SUM()返回0,而其余的将返回错误,需要再次使用IFERROR()函数。


进一步解释:

  • 使用IFNA()IFERROR()函数强制将错误值转换为empty
  • 接下来,使用FILTER()函数仅获取那些不为空的include所述函数的参数为 IFERROR((C16:C20,"")<>""​​返回TRUEFALSEs,FILTER()函数仅抓取那些TRUE并返回包含所有重复项的输出。
  • 包装在UNIQUE()函数内以获取唯一值。
  • 最后,在函数内包装,SUM()然后检查返回的数组是否为空`

在 OP 的上下文中,公式将是:

=LET(arr, IF(Name1="A",Name2,""), SUM(--(UNIQUE(FILTER(arr, IFERROR(arr,"")<>""))<>""))

如果在 OP 中生成一些模型/样本数据,则上述公式可以得到进一步改进。


相关内容