当我的数据存储在第2行及以下时,以下代码对我很有用。但如果我的数组范围是从第6行及以下,我该如何调整公式? 提前致谢
A B
Test1 18/05/2015
Test2 15/05/2015
Test3 19/05/1991
Test4 18/05/2013
命名范围: Array_Range = $ A $ 6:$ B $ 9 Health_Check_Date = B $ 6 $:$ B $ 9
样本数据(从第5行开始)
{{1}}
答案 0 :(得分:0)
当您的数据在第2行开始时,实际上您向下偏移了一行。将数据向下移动到第6行开始时,此问题被放大。这是由于返回工作表行和行位置命名范围的不同。如果 Health_Check_Date 引用B6:B9,那么在第一行的匹配周围包裹ROW function将返回 6 ,而不是 1 < / em>的。您需要通过 Health_Check_Date 的起始行调整hte return。
您的公式旨在将第一,第二,第三等匹配返回到连续行,但您已使用ROW($1:$1)
中的绝对地址将其锁定。我已经删除了这个限制。
EDATE function是一种更有效的方式,可以在今天减少几年。
IFERROR function通过评估公式减少了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↵完成(但你知道!)。填写后续退货。