2013-07-15 32 views
1

以下情況:VLOOKUP:Lookup_Array中日期範圍

表1中的兩個單元提供的日期範圍:

Beginning____End 

1.2013______2.2013 

2.2013______3.2013... 

表2給出具體日期和值

3.1.2013_____500$ 

5.2.2013_____700$... 

我想要什麼現在要做的是在Sheet 1的正確日期範圍旁插入Sheet 2中的Values。請注意,每個日期範圍只有一個日期(因此只有一個值)。

1.2013___ 2.2013___500$ 

2.2013___ 3.2013___700$ 

通常在這種情況下,我會用VLOOKUP和匹配的日期,但是,這並不工作,因爲我將不得不把一個值範圍爲Lookup_Array中。

我會非常感謝您的幫助。這個問題似乎很容易,但我似乎無法找出解決方案!我試圖應用一些解決方案來解決我在這裏和其他網站上發現的類似問題,但我還沒有找到解決方案。

謝謝,最好的問候!

回答

1

我不知道是否有一個選擇,但是這是我想出了:

=IF(VLOOKUP(C3,Sheet1!$B$3:$C$11,1)>=B3,VLOOKUP(C3,Sheet1!$B$3:$C$11,2),0) 

首先要注意的是,你有一個「浮動」或非錨定的範圍內,這引起你的LOOKUP()有點工作,但最終會導致很多錯誤的價值。

公式,這裏有一個小說明:

VLOOKUP(C4,Sheet1!$B$3:$C$11,1)>=B4此檢查,如果End of Period等於或Sheet1我們正在尋找的日期之前。在月份跳過的情況下,這一點是需要照顧的。

VLOOKUP(C3,Sheet1!$B$3:$C$11,2)這看起來對日期的相應值。

而且我更新了你的文件here

+1

好的解決方案!在您的文件的當前版本中,您已經使用了OFFSET和MATCH,但是上面公佈的公式適用於(沒有示例表的讀者,特定日期和值在Sheet1!$ B $ 3:$ C $ 11和開始/結束日期在使用上述公式的工作表B和C列中)。 – nekomatic

+0

@nekomatic哦,哎呀,我嘗試了偏移和匹配的第一輪,我想我忘了保存更新的只有vlookup。感謝您指出了這一點!我剛更新了excel。 – Jerry

+0

嘿傑瑞,嘿nekomatic!非常感謝您的幫助,我非常喜歡Jerrys解決方案。謝謝nekomatic指出VLOOKUP要麼是精確匹配,要麼是小於搜索值的最大值。我把jerrys解決方案轉化爲文字,這可能不會像我這樣有經驗的excel用戶。如果我錯了,請糾正我:如果小於[範圍上限]的最大值大於或等於[範圍下限] - >查找[範圍上限] - 如果不是 - >寫入0 –

0

只要你在Sheet2上的日期是按升序排列,你仍然可以使用VLOOKUP。如果您檢查幫助VLOOKUP你會發現,如果被省略或TRUE的range_lookup參數,函數將匹配的第一個值等於搜索值,或小於搜索值的最大值。因此,在你的榜樣,如果工作表Sheet1上單元格B2包含2.2013然後VLOOKUP(Sheet1!B2, Sheet2!$A$1:$B2)將返回500,因爲3.1.2013是在搜索欄中使用小於搜索值的最後一個值(Excel會將一個month.year日期值等於1.month。年)。

如果有總是每個月Sheet2上的值 - 即它從不跳過從5.2.2013到7.4.2013例如 - 然後VLOOKUP自己應該做你需要的。如果Sheet2上有時缺少幾個月,則需要限制VLOOKUP函數的搜索範圍,以防止(在本示例中)結束日期4.2013返回5.2.2013值。您可以使用OFFSET和MATCH函數爲VLOOKUP的table_array構建一個範圍,該範圍從您要查找的日期範圍的開始處開始。在MATCH函數中使用1的match_type參數,以使其行爲與VLOOKUP相同。

+0

嗨nekomatic,謝謝你的回答。我對VLOOKUP的建議感到厭倦,並且在以下文件中嘗試了LOOKUP:[link](https://dl.dropboxusercontent.com/u/18406645/vlookup.xlsx)正如你所說的,當月份滑行時會出現問題。不幸的是,我的數據就是這種情況。我無法完全理解您的偏移和匹配建議。你有機會有一個鏈接,將進一步解釋或可以指定?非常感謝您的幫助! –

+0

我試圖構建一個示例,但傑裏的解決方案更簡單,所以我建議您接受以下一個:D正如他所評論的,在適當的位置您需要小心指定絕對範圍(使用$符號)。 – nekomatic