2013-04-29 80 views
1

在這之前我問過類似的問題,但事實證明,無論我使用的公式是什麼,都沒有給我正確的結果。所以我不得不重新提出這個問題,並使其更具體。一個Excel公式,找到最大值並檢查多個條件

假設我有以下表格:

enter image description here

我希望有一個公式,讓我有個變化大於零和「橙色」並非在「評論中提到的最新日期「專欄。只有1個百分比變化(列Pct1到Pct 5)需要> 0。所以該公式將輸出11/20/2012,因爲它具有大於0%的百分比變化,並且它不是橙色。

我嘗試了匹配,偏移,最大但它沒有給我正確的結果。我希望把它作爲一個公式輸入到VBA中,因爲我總共需要20個excel文件,我需要宏來檢查這些文件。請幫幫我!謝謝!!

+1

張貼之前請檢查常見問題與指示http://stackoverflow.com/questions/how-to-ask和我個人的最愛:http://mattgemmell.com/2008/12/08/what-have你試過 – 2013-04-29 15:42:01

+0

我很抱歉,如果我不夠具體。如果你不明白我的問題,請告訴我。謝謝 – Futochan 2013-04-29 16:02:25

+0

你的問題標題要求一個公式,但在你的問題,你要求VBA代碼... – user2140261 2013-04-29 16:16:44

回答

6
{=MAX((B2:F6>0)*(ISERR(FIND("ORANGE",UPPER(G2:G6))))*(A2:A6))} 

用Ctrl + Shift + Enter輸入,而不僅僅是Enter。不要輸入花括號,如果您輸入爲數組公式,則Excel會插入它們。

第一部分根據百分比是否大於零返回TRUE和FALSE的矩陣。

第二部分根據FINDing「Orange」是否產生錯誤返回TRUE和FALSES。最後一節返回日期數組。

將數組/矩陣相乘時,TRUE爲1,FALSE爲0,最後得到一組所有條件爲TRUE的日期數組。最後,MAX挑選最大的。

+0

完美!謝謝。最後一個問題:假設我想排除菠蘿。我將公式修改爲以下內容。但是,它沒有給我正確的結果。我將Find(「orange」,upper(G2:G6))修改爲Find(或(「Orange」,「Pineapple」),upper(G2:G6))。我做錯了什麼?謝謝 – Futochan 2013-04-29 18:15:18

+1

+ 1另一個很好的迪克! :) – 2013-04-29 18:32:44

+1

要排除「Orange」和「Pineapple」,嘗試此版本= MAX((B2:F6> 0)* ISERR(SEARCH(「Orange」,G2:G6))* ISERR(SEARCH(「Pineapple」,G2 :G6))* A2:A6)' - 你可以添加更多相同的模式,但如果有多個值排除然後一個不同的方法可能會更好地工作 – 2013-04-29 19:06:36