google-sheets - 基于单元格范围的谷歌表格过滤器公式
问题描述
我有一些数据基本上是一个项目列表和另一个包含订单列表的工作表(有些项目可以出现在多个订单中,这就是为什么我不能为此使用 vlookup)
我的问题是我想获取动态列表中所有项目的所有订单 ID(在我的示例中只有 3 个项目,但可以增长。
我正在尝试使用过滤器公式并且到目前为止已经得到了这个:
=filter('Orders'!AC1:AD,'Orders'!K:K=A4)
它可以很好地检索单元格 A4 中项目编号的所有订单 ID。
但我想要 A 列中所有项目的订单 ID。
我试过
=filter('Orders'!AC1:AD,'Orders'!K:K=A2:A)
但这不起作用。我猜我可能需要做某种数组公式。
但我无法弄清楚。
解决方案
您可以使用该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 运算符,即|
.
推荐阅读
- shell - rm -rf *o 和 rm -rf *.o 的区别
- python - 如何将所有不同的排列存储在递归函数的列表中?
- ios - 如何在iOS中实现平滑拖拽效果?
- sql - 具有多个条件的 SQL 检查约束
- c# - 如何使用循环随机选择一个形状来绘制多个?
- java - 如何将 1000 克格式化为 1 公斤
- c++ - std::tuple 在多个参数上解包
- c - 如何获取函数中输入的值
- java - Java android - Flask-socketio 5.0.1 上的 SocketIO xhr 池错误/Web 套接字错误
- node.js - 如何使用他们的 Spotify 凭据对用户进行身份验证并在 NodeJS 应用程序中获取他们的音乐偏好?