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表格中的查询功能-根据另一列获取一列中的非空最后一个单元格的主要内容,如果未能解决你的问题,请参考以下文章

根据另一列中的值从一列中减去值(SQL)

根据另一列中的值比较一列中的两个值

根据 Pandas 中另一列中的索引从列中获取数据

pandas:根据另一列中的值获取与相应索引的确切对应值

MySQL - 如何根据另一列中的唯一值转置一列中的单元格?

如何根据bigquery中另一列中的重复值计算一列