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 )。
-
IF((E3>=B2:B11)*(E3<=C2:C11),ROW(A2:A11))
返回E3
在START
和FINISH
date之间 -
RANDBETWEEN(1,SUMPRODUCT((E3>=B2:B11)*(E3<=C2:C11)))
生成1
到适当事件计数 -
SMALL(IF(..),RANDBETWEEN(..))
从步骤1的数组中获取随机行号。 -
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)))