Arrays 基于日期条件返回匹配项的数组公式

Arrays 基于日期条件返回匹配项的数组公式,arrays,excel,Arrays,Excel,当我的数据存储在第2行和下面时,以下代码对我来说非常有用。但是,如果我的数组范围是第6行及以下,如何调整公式? 提前谢谢 =IF(ISERROR(INDEX(Array_Range,SMALL(IF(Health_Check_Date<DATE(YEAR(TODAY())-2,MONTH(TODAY()),DAY(TODAY())),ROW(Health_Check_Date)),ROW($1:$1)),1)),"",INDEX(Array_Range,SMALL(IF(Health_Ch

当我的数据存储在第2行和下面时,以下代码对我来说非常有用。但是,如果我的数组范围是第6行及以下,如何调整公式? 提前谢谢

=IF(ISERROR(INDEX(Array_Range,SMALL(IF(Health_Check_Date<DATE(YEAR(TODAY())-2,MONTH(TODAY()),DAY(TODAY())),ROW(Health_Check_Date)),ROW($1:$1)),1)),"",INDEX(Array_Range,SMALL(IF(Health_Check_Date<=DATE(YEAR(TODAY())-2,MONTH(TODAY()),DAY(TODAY())),ROW(Health_Check_Date)),ROW($1:$1)),1))

当数据从第2行开始时,实际上是向下偏移了一行。当您将数据下移到第6行开始时,这个问题被放大了。这是由于返回工作表行和指定范围内的行位置不同所致。如果Health\u Check\u Date指的是B6:B9,那么在第一行的匹配周围换行将返回6,而不是1。您需要根据健康检查日期的起始行调整退货

您的公式旨在将第一、第二、第三等匹配项返回到连续的行中,但您已使用第$1:$1行中的绝对地址将其锁定。我已经取消了这个限制

这是一种更有效的方法,可以在今天缩短几年

减少了IFISERROR。。。通过计算公式并返回默认值(如果公式有错误)或返回公式结果(如果没有错误)来执行

D1中的数组公式为

=IFERROR(INDEX(Array_Range, SMALL(IF(Health_Check_Date<EDATE(TODAY(), -24), ROW(Health_Check_Date)-ROW(INDEX(Health_Check_Date, 1, 1))+1), ROW(1:1)), 1), "")

数组公式需要使用Ctrl+Shift+Enter完成↵ 但你知道!。填写以备后续返回。

是否为健康检查日期如果没有样本数据的一些小的编辑表示,对命名范围的引用是没有意义的。此外,如果将公式简化为=IFERRORINDEXArray_Range、SMALLIFHealth_Check_DateHi之类的内容,您的公式将更容易理解-这是两个公式中的第一个,只需更新后包含数据样本和命名范围引用谢谢!我理解了这个公式,如果B列比C列多一列,你会怎么修改?因此命名的范围:Array_Range=$A$6:$C$9 Health_Check_Date=C$6$:$C$9因为Health_Check_Date是一个定义的范围,所以它是否超过一列并不重要;最后一个问题-您如何修改公式以使公式忽略空白单元格?
=IFERROR(INDEX(Array_Range, SMALL(IF(Health_Check_Date<EDATE(TODAY(), -24), ROW(Health_Check_Date)-ROW(INDEX(Health_Check_Date, 1, 1))+1), ROW(1:1)), 1), "")
=IFERROR(INDEX(Array_Range, SMALL(IF(LEN(Health_Check_Date), IF(Health_Check_Date<EDATE(TODAY(), -24), ROW(Health_Check_Date)-ROW(INDEX(Health_Check_Date, 1, 1))+1)), ROW(1:1)), 1), "")