2014-02-13 103 views
3

我想要VBA代碼或公式將採用可變日期值並在日期列表範圍內找到它。如果它找不到我希望它找到最近的以前的日期值的日期。 VLOOKUP非常適合尋找完全匹配,但我正在努力尋找最近的日期。在最接近指定日期的列表上查找以前的日期

我唯一的想法是創建一個循環,如果它不匹配,繼續從變量日期中減去一天,直到它可以在列表中找到一個匹配。這似乎不是最好或最有效的方法,我希望有人可以推薦一個更簡單的解決方案。

實施例:

Variable Date = 01/26/2014 

Date List 
02/04/2014 
01/27/2014 
01/24/2014 
01/13/2014 
12/29/2013 

Desired Result = 01/24/2014 

任何幫助,將不勝感激。

+0

你可以使用[MATCH(http://office.microsoft.com/en-au/excel-help/match-HP005209168.aspx)函數與'平等match_type'參數爲1:'如果match_type爲1,則MATCH查找小於或等於lookup_value的最大值。 Lookup_array必須按照升序排列# –

+0

如果命令更容易使用查找 – CRondao

+0

@Simoco,感謝您的快速響應。 –

回答

9

假設你的日期是促使細胞A1:A5和您的入住日期是在細胞C1,您可以輸入輸入爲數組公式此功能

=MAX(($A$1:$A$5<=C1)*A1:A5) 

Rememeber,將其輸入爲一個數組式,輸入公式時擊中Ctrl + Shift + Enter

希望這樣做的竅門!

+1

+1,不錯:) –

+1

做得好....... – CRondao

+1

@John Bustos,那很完美。謝謝。 –

0

如果您將最終參數設置爲true(它尋找近似匹配),Vlookup可以實際執行此操作。您需要將您的日期從最舊到最新排序,並且它會返回不在搜索字詞後面的第一個日期。

1

我去這個有點不同,沒有陣列需要 找到多少個號碼是更大然後你正在尋找CountIf() 然後我用=Large這個會發現在我們的第n我們列表中的第n日的一個正在尋找在countIF()

=LARGE(A:A,COUNTIF(A:A,">="&TODAY())) 
相關問題