为什么 INDEX+MATCH 在查询中使用时返回超过 1 个值,而查询外的相同语句 returns 仅返回 1 个值?

Why is INDEX+MATCH returning more than 1 value when used in a query while the same statement outside of the query returns only 1 value?

示例文件: https://docs.google.com/spreadsheets/d/1M-o8Mu3vBrBgs1wC1WL5kqK61m6Vu1K5ylGByKDCZTo/edit?usp=sharing

在 sheet“待指导”中,我在单元格 A2 中有一个查询。该查询可能不是最佳的,也许它很复杂,但它可以工作,除了一个我无法开始工作的小细节。这是当前查询。

=QUERY({
IFERROR(QUERY(FILTER(ARRAYFORMULA({MATCH('Quiz results'!F9:F,Team!G2:G,0),'Quiz results'!A9:A,'Quiz results'!C9:C,'Quiz results'!D9:D,IFERROR('Quiz results'!A9:A/0),"Question:"&CHAR(10)&'Quiz results'!G8&CHAR(10)&CHAR(10)&"Provided answer:"&CHAR(10)&'Quiz results'!G9:G&CHAR(10)&CHAR(10)&"Correct answer:"&CHAR(10)&'Quiz results'!G7}),'Quiz results'!G9:G<>'Quiz results'!G),"SELECT Col1,Col2,Col3,Col4,'Quiz',Col5,'"&'Quiz results'!B6&"','"&'Quiz results'!G6&"',Col6 WHERE Col2 IS NOT NULL LABEL 'Quiz' '','"&'Quiz results'!B6&"' '','"&'Quiz results'!G6&"' ''"),{"","","","","","","",""})
},"SELECT * WHERE Col1 IS NOT NULL ORDER BY Col2,Col1")

B 列显示姓名,为了示例,我将其混淆为“Person 1”等。我想要达到的结果是 A 列显示 B 列中提到的人是否具有活动状态。该信息显示在 A 列的 sheet“团队”中。

到目前为止,我已经能够根据 sheet“团队”中包含相关人员状态的信息获取显示数组行号的查询。为此,我使用了 MATCH 语句。

MATCH('Quiz results'!F9:F,Team!G2:G,0)

当我尝试通过组合 MATCH 语句和 INDEX 语句从“团队”sheet 获取实际的“是”和“否”值时出现问题。

INDEX(Team!A2:A,MATCH('Quiz results'!F9:F,Team!G2:G,0),1)

当我这样做时,整个查询失败并显示消息“查询已完成,输出为空”。这可能是由于 IFERROR 语句。当我删除它时,错误如下。

Function ARRAY_ROW parameter 2 has mismatched row size. Expected: 1. Actual: 998.

据我所知,这意味着 INDEX+MATCH 语句提供了 998 行,而查询的预期输入仅为 1 行。但我不明白为什么它返回这么多行。当我在单元格 A2 中的 sheet“测试”上使用相同的 INDEX+MATCH 语句时,结果 returns 只有一个单元格,给出“是”。 (这实际上应该为该行的特定人员给出“否”,但这是一个不同的问题,可能只是由于在不同的上下文中使用该语句而发生。)即使我将公式封装在 ARRAYFORMULA 中,我结果仍然只得到 1 个单元格。那么,为什么在查询中使用相同的公式会给出 998 行?

我愿意接受任何关于如何在 sheet“接受指导”的 A 列中根据每个人的状态显示正确的“是”和“否”值的想法sheet 在单元格 A2 中使用单个公式的“团队”。这样做的原因是,最后我想使用这些值来过滤查询结果,这样它就不会显示不活跃人员的数据。 (...WHERE Col1<>“否”...)

尝试删除 INDEX 中的 1,这将解决您的 ARRAY_ROW 错误:

=INDEX(Team!A2:A, MATCH('Quiz results'!F9:F, Team!G2:G, 0))

仅供参考,有 VLOOKUP:

=INDEX(IFNA(VLOOKUP('Quiz results'!F9:F, {Team!G2:G, Team!A2:A}, 2, 0)))