Google表格中的查询功能-根据另一列获取一列中的非空最后一个单元格
Posted
技术标签:
【中文标题】Google表格中的查询功能-根据另一列获取一列中的非空最后一个单元格【英文标题】:Query function in Google Sheets - Get non-empty last cell in a column depending on another column 【发布时间】:2021-12-12 16:03:40 【问题描述】:我需要根据相邻列的更改检索列中的最后一个非空单元格。
在下面的示例中,黄色单元格是我的目标。 它们由 A 列中的更改定义。
click here to see example
我已经设法使用图片中的正常功能做到这一点:
=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))
像这样: click here to see example
提前感谢您的任何建议!
PS:使用 Player0 提供的解决方案来处理我的真实数据:
click here
我无法通过第一列“取消排序”,将sort_column
设置为 0 不起作用。基本上我需要始终保持 A 列中元素的顺序相同 - 显然 SORTN 无法做到。
要将其应用于主要示例 - 如果 A 列由 a、c、d、b 组成(而不是 a、b、c、d),我将不得不保留它。
【问题讨论】:
【参考方案1】:使用:
=SORTN(QUERY(SORT(A2:B, ROW(A2:A), 0),
"where Col2 is not null"), 9^9, 2, 1, 1)
更新:
=ARRAY_CONSTRAIN(SORT(SORTN(QUERY(SORT(A2:B, ROW(A2:A), ROW(A2:A), 0),
"where Col2 is not null"), 9^9, 2, 1, 1), 3, 1), 9^9, 2)
【讨论】:
谢谢,但我无法成功地将其应用于我的真实数据。我进行了编辑,包括我的正文的屏幕截图。无法按第一列“取消排序”。 @Lore456 np,答案已更新【参考方案2】:您的任务可以分两步完成:
-
确定包含所需数据的行
=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
【讨论】:
以上是关于Google表格中的查询功能-根据另一列获取一列中的非空最后一个单元格的主要内容,如果未能解决你的问题,请参考以下文章