在他们提供我的空缺之后,我正在尝试制定一个空缺的时间表。我想列出所有说他们可以在特定一天工作的人。
理想情况下,我将创建某种类似于以下内容的列表:
我实际上是在为游泳队安排志愿者,而不是为员工安排志愿者,但是想法是一样的。他们填写的表格也可能有空白点(上面的数据表中未显示,但有可能),并且第一列中的日期也将乱序。我可以手动修复这两个问题,但是如果有一种解决方案不需要我填写空白或对理想日期进行排序。我在Win10 PC上使用Excel 2019。
答案 0 :(得分:0)
从I2开始,您将拥有
=IFERROR(INDEX($B$1:$G$1,AGGREGATE(15,6,COLUMN($B$2:$G$7)
/(INDEX($B$2:$G$7,MATCH(I$1,$A$2:$A$7,0),0)="yes"),ROWS($1:1))-COLUMN($A:$A)),"")
因此,通过在A列中的日期进行匹配,然后找到第一列,第二列,第三列...中的是,在B2:G7中找到右行,最后得到匹配名称从第一行开始。
通过评估公式逐步查看公式,可以了解正在发生的事情:
(1)通过索引/匹配在B2:G7中找到右行
将日期(存储为数字,46666)与A列中的日期列表进行匹配。匹配位置为1,给出行,Index函数中的column参数为0,这样您就可以得到整个行。
(2)查找哪些单元格包含“是”
包含yes的数组中的值将替换为true,而不包含yes的值将设置为false。
(3)进行除法
这是整件事的症结所在。聚合将要做的是忽略#div / 0条目(因为我们使用了选项6),并计算出对应于“是”的最低(最小)列,即2。这是最低的,因为rows($ 1 :1)求和为1,这样您就得到了“第一个最小的”。
(4)调整列,使其相对于B2:G7的第一列。您可以只减去1,但我正在尝试使其保持一致,如果您在范围的左侧插入一列,则它仍然可以工作。
5)然后剩下的就是索引到B1:G1中的名称列表中
和艾伯特在一起。
当公式被下拉时,行($ 1:1)变为行($ 1:2)等,因此您得到第二个最小的列,其中有一个是,因此您得到了第二个名称。最终,当没有更多匹配的名称时,它将出错,因此IFERROR起作用,您将得到一个空白单元格。