在查询中过滤 Vlookup 结果

Filter Vlookup results inside a query

我立即尝试解决的问题是过滤 VLOOKUP 的结果。

这个公式有效:

=ArrayFormula(IFERROR(vlookup($A:$A,importrange("1XYHLG4-BhVUxXObvjEiozI6i19H5Jum97g87uFS6sYs", "DO_NOT_USE!A2:H3000"),{2,3,4,5},false)))

但我想自动过滤结果。我在这个 post 上找到了答案:

但是,当我这样做时,它似乎忽略了 VLOOKUP 部分。我的结果不再与 Col A 中的正确索引键匹配。

=query(ArrayFormula(IFERROR(vlookup(A4:A,importrange("1XYHLG4-BhVUxXObvjEiozI6i19H5Jum97g87uFS6sYs", "DO_NOT_USE!A2:H3000"),{2,3,4,5},false))), "WHERE Col2='"&B2&"'", 1)

附加上下文:我最初试图解决的问题是链接动态和静态数据。我有一个更大的 sheet,我使用查询对其进行了划分,以便每所学校(大约 60 所学校)只允许查看与其相关的数据。不幸的是,他们必须能够手动向 sheet 添加信息(此数据最终会生成到另一个 sheet 并且是必需的)。我开始解决这个问题是因为这整个过程以前总是完全在纸上完成,所有信息都是手工输入的。

我觉得我离解决方案很近了,但我不确定哪里出错了。

编辑-样本数据:

Fake Source Data

Fake Query Test

你的问题 return 结果不符合预期是 Vlookup multiple criteria 的问题,因为 query 总是将所有数据过滤到一个新的 table 而不是如果找不到,则尝试创建 row by row matching 和 return 空行:

1.To 用简单的公式解决你的问题,首先你需要在源数据中添加 Helper Column:

=ARRAYFORMULA(B2:B13&" "&C2:C13)

2.The修改源数据:

3.Next,使用 Vlookup 进行一些修改(我在这里没有使用 importrange 因为我在同一个 table 中引用)

=ArrayFormula(IFERROR(vlookup($B:$B&" "&$G,$A:$I,{2,3,4,5},false)))

最后的结局

您也可以使用不带纯文本 ID 的 query 函数显示结果,这样它只会 return 特定的列并且学校等于单元格值时:

=QUERY(B1:I13, "select B,C,D,E,F where C = '"&G15&"'")