2016-04-11 108 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

很好的使用非数组公式。 –