在MS Excel Office365中只用一个公式,数组公式如何用之前的值来补缺或错误的数据?
例如,如果 A 列中第 1 行到第 5 行的数据为 1,,2,3,err,则 C 列中使用 =a1:a5 的数组公式会导致第二个条目为空,最后一个条目为呃。使用 =c1# 在 E 列中使用公式时相同。如何使用前一个单元格(行)的值来替换空值或错误值?
C 和 E 列的结果应为 1、1、2、3、3。第一个单元格始终是有效值(不是空白,也不是错误)。
我已经尝试了许多公式组合,包括 iferror() 和 offset() 以指向前一个单元格,到目前为止,数组公式没有任何效果。请不要使用 VBA,只有数组类型的公式。
感谢@BigBen 的启发。
=LET(data,A1:A5,
clean,IFERROR(IF(data="","",data),""),
SCAN(0,clean,LAMBDA(a,v,IF(v="",a,v))))
首先定义数据,然后使用 IFERROR() 函数将错误替换为“”,将其重新定义为“干净”。 IF() 语句不会更改任何内容,但会在数据值出错时触发错误函数。
所以现在所有错误值在“干净”数据中都是空白。
然后扫描处理 lambda 函数的干净数据,一次一个值。如果该值为空,则使用 lambda 函数的先前结果。
最终结果是1,1,2,3,3。这将适用于任意数量的空白或错误值。所以 1,,,,,,2,err,err,3 结果为 1,1,1,1,1,1,2,2,2,3.