带有通配符的Excel数组公式

我有一个数组公式,指出一个下拉单元($ AG $ 7)来确定要评估的单元格。 这很好,但是,我需要包括一个额外的项目在下拉是“全部”。

当select这个时,我希望数组公式中使用“*”来返回数组中的所有实例,但是我不能让它工作。

这是我目前使用的公式;

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

我试过使用

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

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

但是这些不起作用。

有人有什么想法吗?

谢谢

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

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

所以:

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

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

顺便说一句:在一个表(ListObject)中,这不需要作为数组公式input。

这不是100%的公式替代,因为如果$V$2是空的,所以没有工作,所以没有给出表列的标题。 您的公式将查看所有列,但是这不可能使用COUNTIFS ,其中每个附加范围都必须具有与criteria_range1参数相同的列数。 所以如果$V$2也可以是空的,那么这是行不通的。

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

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

优点: $V$2$AG$7都可以是空的。

缺点: INDIRECT易失性行为,即使在ListObject表中,该公式也必须是数组公式。 必须使用Ctrl + Shift + Enter确认