首页 > 解决方案 > 基于单元格范围的谷歌表格过滤器公式

问题描述

我有一些数据基本上是一个项目列表和另一个包含订单列表的工作表(有些项目可以出现在多个订单中,这就是为什么我不能为此使用 vlookup)

我的问题是我想获取动态列表中所有项目的所有订单 ID(在我的示例中只有 3 个项目,但可以增长。

我正在尝试使用过滤器公式并且到目前为止已经得到了这个:

=filter('Orders'!AC1:AD,'Orders'!K:K=A4)

在此处输入图像描述

它可以很好地检索单元格 A4 中项目编号的所有订单 ID。

但我想要 A 列中所有项目的订单 ID。

我试过

=filter('Orders'!AC1:AD,'Orders'!K:K=A2:A)

但这不起作用。我猜我可能需要做某种数组公式。

但我无法弄清楚。

标签: google-sheetsgoogle-sheets-formula

解决方案


您可以使用该QUERY功能

这是一种类似于 SQL 的语法来操作您的数据。

=query({Orders!$A:$B},"select Col2 where Col1 matches '"&textjoin("|",true,unique(Summary!$A4:$A))&"' ",1)

或者如果您需要对结果进行排序,请执行以下操作:

=query({Orders!$A:$B},"select Col2 where Col1 matches '"&textjoin("|",true,unique(Summary!$A4:$A))&"' order by Col2 ",1)

第一个参数是您要查询的范围。在这种情况下,它与数组表示法 {Orders!$A:$B}一起插入。

下一个参数是一个字符串,表示类似 SQL 的语句,在这种情况下表示“当第 1 列与项目 A 或项目 C 或项目 D 匹配时选择第 2 列”。

“项目 A 或项目 C 或项目 D”部分是用另一个公式构造的TEXTJOIN。只需抓住要加入的范围,并将分隔符设置为 OR 运算符,即|.


推荐阅读