【问题标题】:Returning the last value from the FILTER function in google sheets从谷歌表格中的 FILTER 函数返回最后一个值
【发布时间】:2020-04-28 19:59:31
【问题描述】:

我正在使用 Google 表格,并希望在基于单独列中的值进行过滤时获取列中的最后一个值,如屏幕截图所示:

我想从 A 列中获取最后一个值,其中 B 列中的值与单元格 D1 中指定的值匹配。

我已经设法通过以下方式做到这一点:

=INDEX(FILTER($A:$A,$B,$B=$D$1),COUNTA(FILTER($A:$A,$B:$B-$D$1)),1)

这行得通,但似乎没有必要使用第二个 FILTER 和 COUNTA,因为它更难理解。有没有办法只返回 FILTER 函数的最后一个值?

自从发布这篇文章以来,我发现了另一种更简洁的方法,但我不得不承认我实际上并不了解它是如何工作的:

=ArrayFormula(LOOKUP(2,1/($B:$B=$D$1),$A:$A))

【问题讨论】:

  • 希望您已将其作为答案发布。 (我花了一段时间才找到你做了什么)

标签: google-sheets-formula


【解决方案1】:

我知道这是我有时会这样做的一种方式。它利用了 VLOOKUP(....TRUE) [default] 选项。

=VLOOKUP(9^99,FILTER({ROW(A:A),A:A},B:B=D1),2)

【讨论】:

  • 如果你的真实数据中恰好有时间戳列,那就更简单了。
  • 这在示例中对我有用,但是当我在真实数据上尝试时,我收到以下错误:在 VLOOKUP 评估中找不到值 '2.95127E+94'。
  • 当您尝试这部分时会发生什么。 =FILTER({ROW(A:A),A:A},B:B=D1) ?
  • 对不起 - 我的错误,我设法将参数切换到大括号内的数组结构。效果很好!
【解决方案2】:

这里你会知道sort和array_Constrain:

=array_constrain(filter(sort({A1:A,row(A1:A)},2,false),B1:B=D1),1,1)

或者你可以使用查询:

=query(filter({A1:A,row(A1:A)},B1:B=D1),"Select Col1 order by Col2 desc limit 1")

或者你可以使用间接:

=indirect("A" & max(filter(row(A:A),B:B=D1)))

【讨论】:

  • 最后 2 个对我有用,但我无法让第一个 array_constrain 公式工作 - 它有错误吗?如果我理解你在做什么,我可以让它与索引一起工作:=index(filter(sort({A1:A,row(A1:A)},2,false),B1:B=D1),2,1)
猜你喜欢
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 2020-11-07
相关资源
最近更新 更多