如果当前值为空或错误,如何在数组公式中重复先前的值?

问题描述 投票:0回答:1

在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,只有数组类型的公式。

excel excel-formula office365 array-formulas
1个回答
2
投票

感谢@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.

© www.soinside.com 2019 - 2024. All rights reserved.