我正在使用Excel 2013。
我有一个包含三列的表:开始日期,结束日期和假日 - 包含一个公式的列,用于检查假日是否在开始日期和结束日期之间。 “开始日期”和“结束日期”列包含对计算日期的其他列的引用。 Holiday列中的公式使用Index
/ Match
函数查看假期列表(在另一个名为SLA Holidays的表格中)。该表包含数千条记录,范围超过一周,并且每天更新。
假日公式不起作用 - 即使在时间范围内有假期,它也会返回FALSE
。在评估公式时,它说AND
函数的第一个逻辑是FALSE
;但是,这是真的(9/3/2018> 8/31/2018)。该公式正确地评估了AND
函数的第二个逻辑。
当我使用对包含这些日期的表之外的单元格的引用替换我的表引用开始日期和结束日期时,该公式正常工作。
下面是表中几条记录的屏幕截图,显示了3列。我还包括了一个用于复制能力的HTML版本。公式如下:
{=AND(INDEX('SLA Holidays'!$A$2:$A$7,MATCH(MIN(ABS('SLA Holidays'!$A$2:$A$7-[@[Start Date]])),ABS('SLA Holidays'!$A$2:$A$7-[@[Start Date]]),0))>[@[Start Date]],INDEX('SLA Holidays'!$A$2:$A$7,MATCH(MIN(ABS('SLA Holidays'!$A$2:$A$7-[@[Start Date]])),ABS('SLA Holidays'!$A$2:$A$7-[@[Start Date]]),0))<[@[End Date]])}
Start Date End Date Holiday
08/31/2018 9/4/2018 FALSE
08/31/2018 9/4/2018 FALSE
08/31/2018 9/4/2018 FALSE
当我使用完全相同的公式,但切换表引用与包含相同日期的单元格引用时,该公式有效。这是更新的公式:
{=AND(INDEX('SLA Holidays'!$A$2:$A$7,MATCH(MIN(ABS('SLA Holidays'!$A$2:$A$7-AC5)),ABS('SLA Holidays'!$A$2:$A$7-AC5),0))>AC5,INDEX('SLA Holidays'!$A$2:$A$7,MATCH(MIN(ABS('SLA Holidays'!$A$2:$A$7-AC5)),ABS('SLA Holidays'!$A$2:$A$7-AC5),0))<AD5)}
有没有办法让这个公式与表中日期的引用一起工作?
“开始日期”和“结束日期”列包含用于计算日期的公式,而不仅仅是实际日期值。我更改了我的假日公式以包含Value
函数,获取表列引用的值,这解决了错误。