有没有办法使用 ARRAYFORMULA 来查找列的 most-recent 偶数输入?

Is there a way to use ARRAYFORMULA to find the most-recent even input of a column?

已解决编辑

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

原版POST

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

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

A列数据随机single-digit(0-9)。我希望 B 列显示 A 列中最近的偶数,但仅限于特定行。该特定行是与B列中单元格的行对应的行。换句话说,在B7单元格中,我想找到最近输入的A列的偶数,具体只在A2:A7范围内( A1 包含一列 header)。

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

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

但是,正如我之前使用数组所做的一些工作告诉我的那样,并不是所有的公式都按预期在数组中迭代。该公式似乎能够 return 在已经偶数的行上正确输出,但它无法 return 预期的 most-recently 在所有其他行中输入偶数。该公式似乎无法正确解释 IF 公式的 ​value_if_false 参数。

我对脚本编写有点陌生,所以我仍在努力学习,但我也尝试涉足自定义函数但无济于事。在编码方面我仍然不知所措,这就是为什么我对 Google 表格的 built-in 公式如此宽容的原因,但我担心我可能已经达到了极限表格公式可以做。

我愿意尝试新的方法,但我唯一真正的限制是我真的希望这是一个 one-touch(或者更好的 no-touch)解决方案,希望不要太过分远远超出了这个问题的范围。如有任何帮助,我们将不胜感激。

编辑

rubber-ducking这里的问题后,我回过头来尝试使用OFFSET公式,希望我能让它和数组公式一起玩。唉,我做不到,但我想我至少应该post把我的进度放在这里供参考。

Attempt with offset

还在努力!

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

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

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