Excel在date之间的范围内select随机值

我有我的例子安装如下图:

在这里输入图像说明

我正在尝试在单元格F3中创build一个公式:

“在用户inputdate(E3)在START(B2:B11)和FINISH(C2:C11)date之间的A2:A11之间select一个随机事件

我能想到的唯一的事情是:

=COUNTIFS(C2:C11,">="&E3,B2:B11,"<="&E3) 

但是,这只会返回可以select的事件的数量。

任何input将不胜感激

这个最终价值的例子可能是:

事件3或事件4,因为7/2/2012发生在两个事件的开始和结束date之间

我想出了这个公式:

 =INDEX(A:A,SMALL(IF((E3>=B2:B11)*(E3<=C2:C11),ROW(A2:A11)), RANDBETWEEN(1,SUMPRODUCT((E3>=B2:B11)*(E3<=C2:C11))) ) ) 

与数组项( CTRL + SHIFT + ENTER )。

  1. IF((E3>=B2:B11)*(E3<=C2:C11),ROW(A2:A11))返回E3STARTFINISHdate之间
  2. RANDBETWEEN(1,SUMPRODUCT((E3>=B2:B11)*(E3<=C2:C11)))生成1到适当事件计数
  3. SMALL(IF(..),RANDBETWEEN(..))从步骤1的数组中获取随机行号。
  4. INDEX(A:A,SMALL(..))获取相应的事件名称。

我知道这已经回答了,但我想提供一个稍微不同的选项,不需要数组input(Ctrl + Shift + Enter):

 =IFERROR(INDEX(A:A,LARGE(INDEX((B2:B11<=E3)*(C2:C11>=E3)*ROW(A2:A11),),RANDBETWEEN(1,COUNTIFS(B2:B11,"<="&E3,C2:C11,">="&E3)))),"No events found on that date") 

这里是一个向后兼容的公式:

 =IF(SUMPRODUCT(--(B2:B11<=E3),--(C2:C11>=E3))=0,"No events found on that date",INDEX(A:A,LARGE(INDEX((B2:B11<=E3)*(C2:C11>=E3)*ROW(A2:A11),),INT(RAND()*SUMPRODUCT(--(B2:B11<=E3),--(C2:C11>=E3)))+1)))