【问题标题】:Query function in Google Sheets - Get non-empty last cell in a column depending on another columnGoogle表格中的查询功能-根据另一列获取一列中的非空最后一个单元格
【发布时间】: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),我将不得不保留它。

【问题讨论】:

    标签: sql function google-sheets


    【解决方案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】:

    您的任务可以分两步完成:

    1. 确定包含所需数据的行 =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
    1. 使用新查询从先前找到的行中输出值=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

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2020-04-27
      相关资源
      最近更新 更多