【问题标题】:Is there a way to use ARRAYFORMULA to find the most-recent even input of a column?有没有办法使用 ARRAYFORMULA 查找列的最新偶数输入?
【发布时间】:2019-03-18 18:31:08
【问题描述】:

已解决编辑

感谢您的帮助。解决方案here

原帖

我制作了一个谷歌表格来描述我在此处链接所面临的问题 (https://docs.google.com/spreadsheets/d/1yK6ZAX8BFnEqiuQO9HIxuY0l62ewDDccj-8EN1r2i2w/edit?usp=sharing)。

下面我也会用文字描述我面临的问题,以及我尝试过的解决方案。

A列的数据是随机的个位数(0-9)。我希望 B 列显示 A 列中最近的偶数,但只能显示特定行。该特定行是与B列中单元格的行相对应的行。换句话说,在单元格B7中,我想找到最近输入的A列偶数,特别是仅在范围A2:A7(A1包含列标题)。

这实际上是一个非常简单的公式,我可以通过简单地检查 A 列中单元格中的值是否为偶数,然后返回该单元格的值(如果为偶数)或该单元格的输出来获得所需的输出如果不是,请在上面。所以公式看起来像:=IF(ISEVEN(A7),A7,B6)​

但是,我的问题是 A 列中的数据长度会随着输入更多数据而增加,而我目前使用填充句柄将公式复制到新单元格的解决方案既不优雅又耗时。所以我想要的解决方案是使用输入到 B 列 (B2) 的第一个单元格中的数组公式,能够返回与另一个公式相同的值。我尝试输入的公式如下:=ARRAYFORMULA(IF(ISEVEN(A2:A),A2:A,INDIRECT(ADDRESS(ROW(A2:A)-1,2))))​

但是,正如我之前的一些数组工作告诉我的那样,并非所有公式都按预期迭代数组。该公式似乎能够在已经是偶数的行上返回正确的输出,但它无法为所有其他行返回预期的最近输入的偶数。该公式似乎无法正确解释IF公式的​value_if_false参数。

我对脚本有点陌生,所以我仍在努力学习,但我也尝试过使用自定义函数,但无济于事。说到编码,我还是一头雾水,这就是为什么我对 Google Sheets 的内置公式如此宽容,但我担心我可能已经达到了 Sheets 公式所能做的极限。

我愿意尝试新方法,但我唯一真正的限制是我真的希望这是一个单触式(甚至更好的非触式)解决方案,希望这不会超出本文的范围问题。任何帮助将不胜感激。

编辑

在这里解决问题后,我回去尝试使用OFFSET 公式,希望我可以让它与数组公式很好地配合使用。唉,我不能,但我想我至少应该在这里发布我的进展以供参考。

Attempt with offset

还在努力!

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    对行号进行 vlookup 似乎对我有用

    =ArrayFormula(if(A2:A="","",vlookup(row(A2:A),{if(iseven(A2:A),row(A2:A)),A2:A},2)))
    

    注意:如果某些行的范围内没有偶数,则会为这些行生成#N/A。

    【讨论】:

      猜你喜欢
      • 2021-08-01
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 2020-12-25
      • 2022-01-22
      相关资源
      最近更新 更多