Excel 带通配符的数组公式

Excel array formula with wildcard

我有一个数组公式,它引用下拉单元格 ($AG$7) 来确定要评估的单元格。这很好用,但是,我需要在下拉列表中添加一个额外的项目,即 "All".

选择此项后,我希望数组公式对 return 数组中的所有实例使用“*”,但我无法让它工作。

这是我目前使用的公式;

={SUM(IF((tblSkillsMatrix[Role]=[@Role])*(INDIRECT("tblSkillsMatrix["&V&"]")=$AG),1,0))}

我试过使用

={SUM(IF((tblSkillsMatrix[Role]=[@Role])*(INDIRECT("tblSkillsMatrix["&V&"]")="*"&$AG),1,0))}

={SUM(IF((tblSkillsMatrix[Role]=[@Role])*(INDIRECT("tblSkillsMatrix["&V&"]")="*"&$AG&"*"),1,0))}

但是这些都不管用。

有人有什么想法吗?

谢谢

显式 = 比较不能使用通配符。 COUTIFSSUMIFS 可以。据我所知,您只想计算(条件总和 1 和 0)。

问题是,COUTIFSSUMIFS 不会处理 INDIRECT 范围。但是 INDIRECT 可以而且应该(因为其不稳定的行为)经常被 INDEX- MATCH 取代。

所以:

=COUNTIFS(tblSkillsMatrix[role],[@role],INDEX(tblSkillsMatrix,,MATCH($V,tblSkillsMatrix[#Headers],0)),"*"&$AG)

如果 $AG 为空,则它独立于 $V 中指定的列进行计数。

顺便说一句:在 table (ListObject) 中,这不需要作为数组公式输入。

这不是您公式的 100% 替换,因为如果 $V 为空并且没有给出 table 列标题,它就不起作用。然后,您的公式将查看所有列,但使用 COUNTIFS 是不可能的,其中每个附加范围必须具有与 criteria_range1 参数相同的列数。所以如果 $V 也可以为空,那么这将不起作用。

如果是这样,那么您可以使用

{=SUM((tblSkillsMatrix[role]=[@role])*(LEFT(INDIRECT("tblSkillsMatrix["&$V&"]"),LEN($AG))=$AG))}

优点:$V$AG都可以为空。

缺点:INDIRECT 的易变行为,因此即使在 ListObject-table 中,此公式也必须是数组公式。必须使用Ctrl+Shift+Enter.

确认