【问题标题】:Filter Vlookup results inside a query在查询中过滤 Vlookup 结果
【发布时间】:2021-06-11 17:39:32
【问题描述】:

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

这个公式有效:

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

但我想自动过滤结果。我在这篇文章中找到了答案:Add Filter to Vlookup formula Google sheets

但是,当我这样做时,它似乎忽略了 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)

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

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

编辑-示例数据:

Fake Source Data

Fake Query Test

【问题讨论】:

  • 你能分享一张包含一些样本数据和预期输出的表格吗?那样排除故障会更容易。
  • @Broly 我认为在创建一些虚假数据时,我发现可能需要额外的步骤,但仍会感谢您的专业知识。伪造的源数据:docs.google.com/spreadsheets/d/… 伪造的输出:docs.google.com/spreadsheets/d/…

标签: google-sheets vlookup


【解决方案1】:

您未按预期返回结果的问题是Vlookup multiple criteria 的问题,因为query 将始终将所有数据过滤到新表中,而不是尝试创建row by row matching 并在未找到时返回空白行:

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

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

2.修改后的源数据:

3.接下来,使用Vlookup并进行一些修改(这里我没有使用importrange,因为我在同一个表中引用)

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

最终结果

您也可以使用query函数显示结果,而无需纯文本ID,这样它只会返回特定列并且当学校等于单元格值时:

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

【讨论】:

  • 我错过了辅助列的整个步骤。谢谢,这工作得很好。作为最后一步,是否会自动过滤掉空白行,以便只有 School C 出现在工作表上(所有其他索引键都隐藏)?到目前为止,我尝试了Filter,但没有成功。
  • 是的,我已经用额外的查询功能编辑了我的答案,看看是否适合你的情况:)
  • 谢谢!我最初使用的是query,但后来遇到了静态与动态字段的问题。我读到vlookup 是最好的解决方案,但在这一点上,我想知道我是否让这比需要的更复杂。欣赏!
  • 欢迎,query也可以动态,我最近学习了:)
猜你喜欢
  • 2022-10-14
  • 2012-04-20
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多