2016-04-11 84 views
0

我的數據集看起來像這樣...多標準最大的聲明如果

State Close Date Probability  Highest Prob/State 
WA  12/31/2016 50%   FALSE 
WA  12/19/2016 80%   FALSE 
WA  10/15/2016 80%   TRUE 

我的目標是建立一個公式來填充最右邊的列。該公式應評估每個州內的關閉日期和概率。首先,它應該選擇最高的概率,然後如果概率相等(如示例中所示),它應該選擇最近的關閉日期。對於該記錄,它應該是「TRUE」。

我認爲這將包括一個MAX IF語句,但一直未能得到它的工作。

這是我正在使用的一組更強大的數據。首先找到每個區域內的最高概率,然後選擇最小(最早)的日期,如果概率相等,可能會更容易。這也將服務於我的目的。

Region     Forecast Close Date Probability (%) 
Okeechobee FL    6/27/2016     90 
Okeechobee West FL  7/1/2016     40 
Albany GA     3/11/2016     100 
Emerald Coast FL   6/30/2016     60 
Emerald Coast FL   10/1/2016     40 
Cullman_Hartselle TN  4/30/2016     10 
North MS     10/1/2016     25 
Roanoke VA    8/31/2016     25 
Roanoke VA    8/1/2016     40 
Gardena CA    6/1/2016     80 
Gardena CA    6/1/2016     80 
Lomita-Harbor City  6/30/2016     60 
Lomita-Harbor City  6/30/2016     0 
Lomita-Harbor City  6/30/2016     40 
Eastern NC    6/30/2016     60 
Northwest NC    9/16/2016     10 
Fort Collins_Greeley CO 3/1/2016     100 
Northwest OK    6/30/2016     100 
Southwest MO    7/29/2016     90 
Northern NH-VT   3/1/2016     20 
South DE     12/1/2016     0 
South DE     12/1/2016     20 
Kingston NY    12/30/2016    5 
Longview WA    11/30/2016    5 
North DE     12/1/2016     20 
North DE     12/1/2016     0 
Salt Lake City UT   8/31/2016     20 
Idaho Panhandle   8/26/2016     0 
Bridgeton_Salem NJ  7/1/2016     25 
Bridgeton_Salem NJ  7/1/2016     65 
Layton_Ogden UT   3/25/2016     5 
Central OR    6/30/2016     10 
+0

當你說'最近的接近date'你的意思是在兩個方向上,最新最快? –

+0

是的,最新的和最快的。 – sqlbg

+0

您使用的是什麼版本的Excel? –

回答

2

以下數組公式應該工作:

=(ABS(B2-$F$2)=MIN(IF(($A$2:$A$33=A2)*(C2=MAX(IF($A$2:$A$33=A2,$C$2:$C$33))),ABS($B$2:$B$33-$F$2))))*(C2=MAX(IF($A$2:$A$33=A2,$C$2:$C$33)))>0 

作爲一個陣列式使用退出編輯模式時按Ctrl移輸入。如果做得好,Excel會在公式周圍放置{}

![![enter image description here

編輯

新增@tigeravatar建議,以避免揮發性功能。

+2

'TODAY()'是一個易失性函數。我強烈建議將它放在一個單獨的單元格中,然後簡單地引用該單元格以減少計算時間。雖然好回答:) – tigeravatar

+0

@tigeravatar偉大的建議。 –

+0

@sqlbg進行了另一次編輯以添加所需的條件。 –

1

我認爲現在好了,但需要根據OP提供的更完整的數據進行檢查。

據統計: -

(1)具有相同的狀態,但是概率較高任何行

(2)具有相同的狀態和概率,在未來(或存在)和接近任何行到今天的日期(3)具有相同狀態和概率的過去和接近今天日期的任何行。

如果所有這些都是零,你應該有正確的。

=COUNTIFS($A$2:$A$100,$A2,$C$2:$C$100,">"&$C2) 
+COUNTIFS($A$2:$A$100,$A2,$C$2:$C$100,$C2,$B$2:$B$100,"<"&$G$2+IF ($B2>=$G$2,DATEDIF($G$2,$B2,"d"),DATEDIF($B2,$G$2,"d")),$B$2:$B$100,">="&$G$2) 
+COUNTIFS($A$2:$A$100,$A2,$C$2:$C$100,$C2,$B$2:$B$100,">"&$G$2-IF($B2>=$G$2,DATEDIF($G$2,$B2,"d"),DATEDIF($B2,$G$2,"d")),$B$2:$B$100,"<"&$G$2) 
=0 

如果這兩個日期都在未來,它可以簡化很多: -

=COUNTIFS($A$2:$A$100,$A2,$C$2:$C$100,">"&$C2) 
+COUNTIFS($A$2:$A$100,$A2,$C$2:$C$100,$C2,$B$2:$B$100,"<"&$G$2+DATEDIF($G$2,$B2,"d")) 
=0 

enter image description here

+0

很好的使用非數組公式。 –