答案1
VLOOKUP()
将始终找到 lookup_value 的第一次出现。
INDEX(array, row_num,[column_num])
row_num
如果您按照填写的内容提供了每个代理商的信息,那么您就可以列出代理商。
让我们先来大批(列表)Mark 的代理的行号。此表达式
IF($E$2:$E$9=I$1,ROW($E$1:$E$8))
检查 E 列等于I$1
(Mark) 的位置,无论它在哪里,它都会从 1 到 8 行的行号列表中返回一个数字。在 E 列不等于 Mark 的位置,表达式返回False
。因此,此表达式给出的实际数组是{1,FALSE,3,FALSE,5,FALSE,7,FALSE}
。请注意,为 Mark 的每个代理返回的数字实际上比他们的行号小一。
接下来,我们要列出这些数字,因为公式向下填充,同时忽略值FALSE
。 SMALL(array, k)
返回从中第 k 个最小的值array
。随着它向下填充,ROW(I1)
增量和数字按顺序列出:
SMALL(IF($E$2:$E$9=I$1,ROW($E$1:$E$8)),ROW(I1))
现在我们可以row_num
在函数中使用该表达式INDEX()
来获取马克的经纪人的姓名:
=INDEX($F$2:$F$9,SMALL(IF($E$2:$E$9=I$1,ROW($E$1:$E$8)),ROW(I1)))
F2:F9
此表达式返回 中与 提供的数字相对应的值SMALL()
。因此,当它被填满时,它会列出 Mark 的代理人的姓名。您可以使用此公式列出代理人,但请参阅下面的注释。
如果填充的内容超出 Mark 拥有的 Agent 数量,则会出现错误#N/A!
。可以通过将整个公式包装在 中来将这些内容转换为空白IFERROR()
:
=IFERROR(INDEX($F$2:$F$9,SMALL(IF($E$2:$E$9=I$1,ROW($E$1:$E$8)),ROW(I1))),"")
此公式从 I2 向下和向右填充,给出如下所示的结果。
请注意,这是一个数组公式,因此必须用 来输入CTRL ShiftEnter,而不仅仅是Enter。
这是对公式的冗长解释,但我希望它能有所帮助。祝你好运。