sql - Google表格中的查询功能-根据另一列获取一列中的非空最后一个单元格
问题描述
我需要根据相邻列的更改来检索列中的最后一个非空单元格。
在下面的示例中,黄色单元格是我的目标。它们由 A 列中的更改定义。
如图所示,我已经设法使用正常功能做到这一点:
=INDEX(ArrayFormula(FILTER(B2:B20,A2:A20=D2)),ArrayFormula(MATCH(0, FILTER(B2:B20,A2:A20=D2),-1)),1)
我现在需要使用查询功能来完成它,因为结果必须随着导入范围的增长而自动更新。
到目前为止,这是可行的 - 但我仍然需要在 A 列上创建适当的依赖关系:
=QUERY(A2:B20, "select A, B where B is not null limit 1 offset "&(COUNT(A2:B20)-1))
像这样: 单击此处查看示例
提前感谢您的任何建议!
PS:在此处使用 Player0 提供的解决方案来处理我的真实数据:
单击此处
我无法通过第一列“取消排序”,设置sort_column
为 0 不起作用。基本上我需要始终保持 A 列中元素的顺序相同 - 显然 SORTN 无法做到这一点。
要将其应用于主要示例 - 如果 A 列由 a、c、d、b(而不是 a、b、c、d)组成,我将不得不保留它。
解决方案
您的任务可以分两步完成:
- 确定包含所需数据的行
=index(query({A2:B20,ROW(A2:B20)},"select max(Col3) where Col2 is not null group by Col1 label max(Col3)''"))
并使用公式将结果组装成正则表达式JOIN("|", -- query result --)
结果我们有一个字符串:5|11|14|19
- 使用新查询从先前找到的行中输出值
=index(query({A2:B20,ROW(A2:B20)},"select Col1,Col2 where Col3 matches '"& join("|",query({A2:B20,ROW(A2:B20)},"select max(Col3) where Col2 is not null group by Col1 label max(Col3)''")) &"'"))
该范围A2:B20
用于示例,但该公式也适用于开放范围A2:B
推荐阅读
- javascript - 单击按钮后,文本区域输入未设置为空字符串,并且文本区域光标未从头开始
- java - Android - 从 uri 加载照片
- python - 在 OpenSSL 或 Python 中使用给定密钥解密 AES-256 文件
- grails - 无法使用 Java 11 运行 Grails 4.0.1 cli - 在堆栈跟踪中出现空指针错误
- c# - 双斜杠在字符串 C# 中无法正常工作
- angular - app.module.ts 中声明的 Angular 子 html 引用组件
- codeblocks - 我需要在 Code::Blocks 中更改工作区的颜色
- c# - 有没有办法在 c# 中将参数与访问器一起使用
- python - 如何正确使用 Keras 添加层?
- go - 从其他功能使用 mongodb 连接