我有一个数组公式,它引用一个下拉单元格($ AG $ 7)来确定要评估的单元格。这很有效,但是,我需要在下拉列表中包含一个额外的项目,即" All"。
选择此项后,我希望数组公式使用" *"从数组中返回所有实例,但我无法使其工作。
这是我目前正在使用的公式;
={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))}
但这些都不起作用。
有人有什么想法吗?
由于
答案 0 :(得分:2)
显式=
比较不能使用通配符。 COUTIFS
和SUMIFS
可以。据我所知,你只想计算(条件和1和0)。
问题是,COUTIFS
和SUMIFS
不会处理INDIRECT
范围。但是INDIRECT
可以而且应该(由于其不稳定的行为)经常被INDEX
- MATCH
取代。
所以:
=COUNTIFS(tblSkillsMatrix[role],[@role],INDEX(tblSkillsMatrix,,MATCH($V$2,tblSkillsMatrix[#Headers],0)),"*"&$AG$7)
如果$AG$7
为空,则其计数与$V$2
中指定的列无关。
Btw。:在表格(ListObject)中,不需要输入数组公式。
这不是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 + 输入确认。