2014-03-25 62 views
0

考慮到已滿足兩個條件(日期),我想搜索數據的存在(例如1430)。如果這個數字不存在,我想返回最大值,這兩個標準的值小於我的目標值。Excel匹配匹配類型= 1的多個條件具有大數據集的中斷

我使用下面的方法: http://support.microsoft.com/kb/59482

此外,我通過Excel的幫助系統扶着相匹配的幫助文件,概述MATCH_TYPE:

1 or omitted: MATCH finds the largest value that is less than or equal to lookup_value. The values in the lookup_array argument must be placed in ascending order, for example: ...-2, -1, 0, 1, 2, ..., A-Z, FALSE, TRUE. 

因此,我已經整理我的數據,使得兩個日期序列從最舊到最新排序,並且目標值排序從最小到最大。

此:

{=INDEX(data!$C$2:$C$21, MATCH(a2&b2&c2,data!$A$2:$A$21&data!$B$2:$B$21&data!$C$2:$C$21,1))} 

(其中A2 = 01年2月16日,B2 = 01年3月17日,和c2 = 1430)

工作在我小的測試集精緻,返回1425 ,如預期:

Trade Maturity Strike 
15-Feb-01 17-Mar-01 600.00 
15-Feb-01 17-Mar-01 625.00 
15-Feb-01 17-Mar-01 650.00 
16-Feb-01 16-Mar-01 1300.00 
16-Feb-01 16-Mar-01 1325.00 
16-Feb-01 16-Mar-01 1375.00 
16-Feb-01 17-Mar-01 1400.00 
16-Feb-01 17-Mar-01 1410.00 
16-Feb-01 17-Mar-01 1425.00 
16-Feb-01 17-Mar-01 1450.00 
16-Feb-01 17-Mar-01 1475.00 
16-Feb-01 17-Mar-01 1500.00 
16-Feb-01 18-Mar-01 600.00 
16-Feb-01 18-Mar-01 625.00 
16-Feb-01 18-Mar-01 650.00 
16-Feb-01 18-Mar-01 675.00 
13-Mar-01 21-Apr-01 600.00 
13-Mar-01 21-Apr-01 625.00 
13-Mar-01 21-Apr-01 650.00 
13-Mar-01 21-Apr-01 675.00 

但我的實際測試集超過82,000行數據失敗。具體而言,當我在完整數據集上運行搜索時,它會返回目標交易日期之前的最後一個日期的最大值(例如650)。

我已經搜索了幾個小時,讓它在我的腦海中醃幾天,但似乎無法破解這個問題。有任何想法嗎?

+0

當您連接3個數字一起(日期編號)‘600’比‘1500’時,這就是爲什麼它失敗,看到我的解決方案... – CRondao

回答

1

試試這個數組公式:

=VLOOKUP(F1;IF((A2:A21=G1)*(B2:B21=H1);C2:C21;"");1;1) 

根據您的區域設置,你可能需要更換「;」通過「」

F1包含,在這種情況下,罷工尋找,G1和H1貿易和成熟度

+0

這工作。謝謝!!!!!!兩個問題:1)你有什麼想法爲什麼索引匹配方法失敗?和,2)公式中的if語句是否創建一個新數組? – Brian

+0

另外,我怎麼能確定它的價值低於我的目標呢? – Brian

+0

它的索引+匹配失敗,其連接,數字將成爲文本,在文本中,「600」大於「1500」。隨着長期罷工對每個交易進行排序,到期組合將起作用。 – CRondao