1

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

在“待指导”表上,我在单元格 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$7),"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 列的“团队”表中。

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

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

当我尝试通过将 MATCH 语句与 INDEX 语句相结合来从“团队”表中获取实际的“是”和“否”值时,就会出现问题。

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

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

函数 ARRAY_ROW 参数 2 的行大小不匹配。预期:1。实际:998。

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

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

4

1 回答 1

2

尝试删除 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)))
于 2022-02-08T22:30:30.987 回答