Excel反向查询中的多个响应

时间:2019-07-14 11:09:57

标签: excel lookup

在他们提供我的空缺之后,我正在尝试制定一个空缺的时间表。我想列出所有说他们可以在特定一天工作的人。

Table of data

理想情况下,我将创建某种类似于以下内容的列表:

Ideal output table

我实际上是在为游泳队安排志愿者,而不是为员工安排志愿者,但是想法是一样的。他们填写的表格也可能有空白点(上面的数据表中未显示,但有可能),并且第一列中的日期也将乱序。我可以手动修复这两个问题,但是如果有一种解决方案不需要我填写空白或对理想日期进行排序。我在Win10 PC上使用Excel 2019。

1 个答案:

答案 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中找到右行,最后得到匹配名称从第一行开始。

enter image description here

通过评估公式逐步查看公式,可以了解正在发生的事情:

(1)通过索引/匹配在B2:G7中找到右行

enter image description here

将日期(存储为数字,46666)与A列中的日期列表进行匹配。匹配位置为1,给出行,Index函数中的column参数为0,这样您就可以得到整个行。

(2)查找哪些单元格包含“是”

enter image description here

包含yes的数组中的值将替换为true,而不包含yes的值将设置为false。

enter image description here

(3)进行除法

enter image description here

这是整件事的症结所在。聚合将要做的是忽略#div / 0条目(因为我们使用了选项6),并计算出对应于“是”的最低(最小)列,即2。这是最低的,因为rows($ 1 :1)求和为1,这样您就得到了“第一个最小的”。

(4)调整列,使其相对于B2:G7的第一列。您可以只减去1,但我正在尝试使其保持一致,如果您在范围的左侧插入一列,则它仍然可以工作。

enter image description here

5)然后剩下的就是索引到B1:G1中的名称列表中

enter image description here

和艾伯特在一起。

当公式被下拉时,行($ 1:1)变为行($ 1:2)等,因此您得到第二个最小的列,其中有一个是,因此您得到了第二个名称。最终,当没有更多匹配的名称时,它将出错,因此IFERROR起作用,您将得到一个空白单元格。