Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel公式返回最近日期或相等日期的值_Vba_Excel_Date - Fatal编程技术网

Vba Excel公式返回最近日期或相等日期的值

Vba Excel公式返回最近日期或相等日期的值,vba,excel,date,Vba,Excel,Date,我正在使用excel公式,该公式将引用同一工作簿中不同工作表上的表,并返回基于当前日期的值。到目前为止,我已经能够使用这个公式返回我想要的值。我已经包括了一个公式的示例表来显示方法 虽然这样做有效,但缺陷在于如果没有具有精确匹配日期的行,它将返回#N/A。在上表的情况下,事务不是每天发生的,因此,如果TODAY()返回的给定日期与所示表中的任何一行都不匹配,则会破坏公式。我的表还包含将来存在的“计划”或“预期”事务,这意味着我不能依赖MAX()函数来提供正确的结果 话虽如此,我正在寻找对这个公

我正在使用excel公式,该公式将引用同一工作簿中不同工作表上的表,并返回基于当前日期的值。到目前为止,我已经能够使用这个公式返回我想要的值。我已经包括了一个公式的示例表来显示方法

虽然这样做有效,但缺陷在于如果没有具有精确匹配日期的行,它将返回#N/A。在上表的情况下,事务不是每天发生的,因此,如果TODAY()返回的给定日期与所示表中的任何一行都不匹配,则会破坏公式。我的表还包含将来存在的“计划”或“预期”事务,这意味着我不能依赖MAX()函数来提供正确的结果

话虽如此,我正在寻找对这个公式的一个调整,即使当前日期与任何行都不完全匹配,它也将始终返回一个值。使用上面的图像作为参考,如果TODAY()返回的日期是2/20/17,那么它应该给出的结果应该是d51566中的值。相反,如果日期为2017年2月28日,则应返回D71182中的值

愿意接受任何有助于实现这些结果的建议。如果您需要进一步的澄清,请告诉我。谢谢

我会用

=IFERROR(VLOOKUP(E2,A:D,4,TRUE),D2)

因此,如果您的日期早于A列中的最低值,它将返回d列中的第一个值(即D2单元格中的值)

使用索引匹配,而不是上面建议的IFERROR中的VLOOKUP。

以下是您建议的公式。但是,当它显示为无效的索引匹配函数调用时,就会破坏公式。你能提供一些建议来纠正它吗
=IFERROR(索引匹配(TODAY(),A:D),D2)
IFERROR的目的是显示某些内容,而不是NA或错误。它的工作方式是:=IFERROR(您想要使用的公式,您想要的公式或值,而不是NA或ERROR)。索引匹配的设置与VLOOKUP不同,因此您不能使用相同的字符串:=索引(D:D,MATCH(TODAY(),A:A,0))。您应该能够计算出除了最后的0之外的每个位的含义。这可以是-1、0或1。Excel应该告诉您这些是什么意思。我将使用的公式是:=IFERROR(INDEX(D:D,MATCH(TODAY(),A;A,0)),INDEX(D:D,MATCH(TODAY(),A:A,-1)),这似乎是有效的。。。但我很好奇,当VLOOKUP没有返回有效值时,我理解的IFERROR函数只是返回D2的值。这通常意味着,每当VLOOKUP中使用的日期介于表中列出的日期之间时,我得到的唯一值是D2的值,但情况似乎并非如此。VLOOKUP的第四个参数设置为TRUE,它告诉Excel不要寻找精确的匹配项(如FALSE)。有关更多详细信息,请参阅MSDN文档。既然我解决了你们的问题,你们可能想把答案标记为已接受。非常感谢。
=IFERROR(VLOOKUP(E2,A:D,4,TRUE),D2)