Vba Excel公式返回最近日期或相等日期的值
我正在使用excel公式,该公式将引用同一工作簿中不同工作表上的表,并返回基于当前日期的值。到目前为止,我已经能够使用这个公式返回我想要的值。我已经包括了一个公式的示例表来显示方法 虽然这样做有效,但缺陷在于如果没有具有精确匹配日期的行,它将返回#N/A。在上表的情况下,事务不是每天发生的,因此,如果TODAY()返回的给定日期与所示表中的任何一行都不匹配,则会破坏公式。我的表还包含将来存在的“计划”或“预期”事务,这意味着我不能依赖MAX()函数来提供正确的结果 话虽如此,我正在寻找对这个公式的一个调整,即使当前日期与任何行都不完全匹配,它也将始终返回一个值。使用上面的图像作为参考,如果TODAY()返回的日期是2/20/17,那么它应该给出的结果应该是d51566中的值。相反,如果日期为2017年2月28日,则应返回D71182中的值 愿意接受任何有助于实现这些结果的建议。如果您需要进一步的澄清,请告诉我。谢谢 我会用Vba Excel公式返回最近日期或相等日期的值,vba,excel,date,Vba,Excel,Date,我正在使用excel公式,该公式将引用同一工作簿中不同工作表上的表,并返回基于当前日期的值。到目前为止,我已经能够使用这个公式返回我想要的值。我已经包括了一个公式的示例表来显示方法 虽然这样做有效,但缺陷在于如果没有具有精确匹配日期的行,它将返回#N/A。在上表的情况下,事务不是每天发生的,因此,如果TODAY()返回的给定日期与所示表中的任何一行都不匹配,则会破坏公式。我的表还包含将来存在的“计划”或“预期”事务,这意味着我不能依赖MAX()函数来提供正确的结果 话虽如此,我正在寻找对这个公
=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)