[英]Array formula to return contents of adjacent cells based on multiple criteria
[英]Array formula to return match based on date criteria
当我的数据存储在第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))
命名范围:Array_Range = $ A $ 6:$ B $ 9 Health_Check_Date = B $ 6 $:$ B $ 9
样本数据(从第5行开始)
A B
Test1 18/05/2015
Test2 15/05/2015
Test3 19/05/1991
Test4 18/05/2013
当数据从第2行开始时,实际上实际上是向下偏移了一行。 当您向下移动数据以从第6行开始时,此问题被放大了。这是由于返回工作表行和该行在指定范围内的位置的差异。 如果Health_Check_Date引用B6:B9,则将ROW函数包装在第一行的匹配项周围将返回6 ,而不是1 。 您需要在Health_Check_Date的开始行调整返回值 。
您的公式旨在将第一,第二,第三等匹配项返回到连续的行中,但是您已使用ROW($1:$1)
的绝对地址将其锁定。 我已取消该限制。
IFERROR函数通过评估公式并返回默认值(如果错误)或返回默认值(如果不是),来减少IF(ISERROR(...
要求的公式加倍。
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), "")
如果需要丢弃Health_Check_Date中的空白单元格, 则将一个多余的IF
堆叠到忽略零长度的工作中。
=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), "")
数组公式需要使用Ctrl + Shift + Enter 键 完成 (但您知道!)。 填写后续退货。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.