2017-02-01 135 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