你可以尝试:
• 单元格 E2
中使用的公式
=LET(x,IF(A2:C13="","",A2:C13),FILTER(x,TAKE(x,,1)=E1))
另一种可能的方法是在数组参数前面添加&""
。请注意,这将把您的数字值转换为文本,因此您可以使用VALUE()
函数或乘以1
来将其转换回数字,以便进行进一步的计算。
• 单元格E8
中使用的公式
=FILTER(A2:C13&"",A2:A13=E1," ")
或者,您可以像VBasic2008先生所建议的那样使用。
• 单元格 E14
中使用的公式
=FILTER(IF(A2:C13="","",A2:C13),A2:A13=E1," ")
=FILTER(IF(A2:C13="","",A2:C13),A2:A13=E1," ")
。 - VBasic2008有多种解决方法。我认为更改Excel配置是解决此问题的首选,因为它不需要修改原始公式:文件 -> 选项 -> 高级并取消标记以下突出显示的选项:在值为零的单元格中显示零:
它仅适用于所选工作表。以下是输出:
如果没有这个选项可用,例如在使用Excel Web时,那么您需要使用公式。 我更喜欢不改变输出的数据类型,并且在输出中进行转换而不是在输入中进行转换,因为输出是输入的子集,所以在减少的子集中进行任何转换会更有效率。例如:
=LET(f, FILTER(A2:C4, A2:A4=E1), IF(f="","",f))
或者
=LET(f, FILTER(A2:C4, A2:A4=E1), IF(LEN(f),f,""))
这里是输出结果(已标记所需的Excel选项):
顺便提一下,这个问题应该被标记为重复,因为有一个类似的问题:Excel FILTER() returning 0 for blank cells,但我更喜欢这里提供的答案,而且这个问题的提出者比那个问题的提出者表述得更加精确。我通过使用IF
函数解决了它。=IF(FILTER(Array, Array Conditions)=0, "",FILTER(Array, Array Conditions))
=SUBSTITUTE(FILTER(A2:C13,A2:A13=E1," "),0,"")
。 - VBasic2008SUBSTITUTE()
函数将会替换10
中的0
,因此返回值为1
。所以使用它是不正确的。 - Mayukh Bhattacharya