答案1
答案2
感谢所有查看并考虑回复的人。昨天,当我继续研究这个问题时,我得出结论,我的方法不正确。我最终修改了表格布局 - 基本上将“y”放在 X 轴上。最终公式包含的内容比我最初要求的要多得多,但最终我发现 SMALL 函数是关键;在这个版本中,我将其设置为返回每次出现的值(我只期望三次),并为每个出现创建一个公式。之后,我将其与 HLOOKUP 配对,如果返回错误,则大功告成!
=IF($L8="+",IF(AND(ISERROR(HLOOKUP(INDEX(INDIRECT("表格!"&ADDRESS(79,55+MATCH(E$6,表格!$BD$78:$CL$78,0))&":"&ADDRESS(130,55+MATCH(E$6,表格!$BD$78:$CL$78,0))),SMALL(IF(表格!$BC$79:$BC$117=$K8,ROW(表格!$BC$79:$BC$117)-ROW(INDEX(表格!$BC$79:$BC$117,1,1))+1),1)),$E$2:$K$3,1,FALSE)),ISERROR(HLOOKUP(INDEX(INDIRECT("表!"&ADDRESS(79,55+MATCH(E$6,表!$BD$78:$CL$78,0))&":"&ADDRESS(130,55+MATCH(E$6,表!$BD$78:$CL$78,0))),SMALL(IF(表!$BC$79:$BC$117=$K8,ROW(表!$BC$79:$BC$117)-ROW(INDEX(表!$BC$79:$BC$117,1,1))+1),2)),$E$2:$K$3,1,FALSE)),ISERROR(HLOOKUP(INDEX(INDIRECT("表!"&ADDRESS(79,55+MATCH(E$6,表!$BD$78:$CL$78,0))&":"&ADDRESS(130,55+MATCH(E$6,表!$BD$78:$CL$78,0))),SMALL(IF(表!$BC$79:$BC$117=$K8,ROW(表!$BC$79:$BC$117)-ROW(INDEX(表!$BC$79:$BC$117,1,1))+1),3)),$E$2:$K$3,1,FALSE))),"","X"),"") 作为 CSE。
答案3
我有一点变化Máté 的回答。
创建一个辅助行,简单地复制列
M
,即“性别”列,但转置(将每个人的性别放在他们的列中)。例如,使用第 24 行,放入=INDEX($M$1:$M$10, COLUMN())
进入单元格
B24
并拖动/填充到右侧的列J
。我们不需要使用MATCH()
,因为如果(例如)我们在列F
(即第 6 列),这是 Bob 的列,那么 Bob 的性别在第 6 行。我们不需要做,IF()
因为我们可以在下一步中测试该值。正如 Máté 的回答一样,如果您愿意,可以隐藏此辅助行。
或者,您可以
M
完全消除列并仅将性别存储在一行中。在第 2 行的某个位置(例如,单元格
N2
),输入公式=SUMPRODUCT(--(B2:J2="y"), --(B$24:J$24="f"))
SUMPRODUCT()
,顾名思义,就是将一些数字相乘,然后相加。它本质上与 Máté 的 相同 ,但不需要以数组公式的形式输入。由于 Máté 没有解释他的答案:这将查看范围-中的每一列(成员的列)。它查看当前行(显示为 )以查看成员(对应此列)是否是与此行对应的团队的成员。并且它查看第 24 行以查看成员是否为女性。使用转换为并将转换为。将它们相乘可得到该团队中每个女性成员的 ;然后将这些一和零相加即可得到团队中的女性人数。SUM(range1*range2)
B
J
2
--
TRUE
1
FALSE
0
1
当然,拖动/填充至第 10 行。
当然,您可以测试计数是否为 0,可能使用条件格式。