2017-02-01 64 views
0

我正在处理一个Excel公式,它将在同一工作簿中的不同工作表上引用一个表,并返回基于当前日期的值。到目前为止,我已经能够使用这个公式来返回我想要的值。我已经包含了一个公式示例表来显示方法。Excel公式在最近或相等的日期返回值

https://i.stack.imgur.com/ThwL0.png

=VLOOKUP(TODAY(),TRANSACTIONS!A:D,4,FALSE) 

在这个作品中,缺陷是它会返回#N/A如果没有线,具有精确匹配的日期。在上表的情况下,交易不会每天发生,因此如果TODAY()返回的给定日期与所示表格中的任何行不匹配,则会破坏公式。我的表格还包含“计划”或“预期”的交易,这些交易存在于未来的意义中,我不能依靠MAX()函数来提供正确的结果

所以,我正在寻找一个调整公式,该公式将始终返回一个值,即使当前日期与任何行完全不匹配。使用上面的图像作为参考,如果TODAY()返回的日期为2/20/17,则它应该给出的结果应该是D5中的值1566.相反,如果日期是2/28/17,它应该返回D7中的值,1182.

任何可以实现这些结果的建议都可以使用。让我知道你是否需要进一步澄清。谢谢!

回答

0

我会使用

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

使前应在A列中最低的日期秋天它会返回列d的第一个值(即在D2单元格的值)

+0

这似乎是工作......我很好奇,虽然 - 我已经明白它的IFERROR函数只是在VLOOKUP没有返回有效值时返回D2的值。这通常意味着,在VLOOKUP中使用的日期在表格中列出的日期之间,我所能得到的唯一值就是D2的值,但似乎并非如此。 – tbozeglav

+0

VLookup的第四个参数设置为TRUE,它告诉Excel不要查找完全匹配(如FALSE所做的那样)。有关详细信息,请参阅MSDN文档。由于我解决了您的问题,因此您可能需要将答案标记为已接受。谢谢! – user3598756

+0

@tbozeglav,它不再适用于你吗? – user3598756

0

使用INDEX MATCH而不是上面已经提到的IFERROR中的VLOOKUP。

+0

这是你建议的公式。但是,当它显示为无效的INDEX MATCH函数调用,从而破坏公式。你能提供任何建议来纠正它吗? '= IFERROR(INDEX MATCH(TODAY(),A:D),D2)' – tbozeglav

+0

IFERROR的用途是显示某些内容而不是NA或ERROR。它的工作方式是: = IFERROR(您想使用的公式,您想要的公式或值,而不是NA或ERROR)。 INDEX MATCH与VLOOKUP的设置方式不同,因此您不能使用相同的字符串: = INDEX(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))) – Bing