我的示例设置如下图所示:
我试图在单元格F3中制作一个公式:
"在A2:A11之间选择随机事件,其中用户输入日期(E3)在START(B2:B11)和FINISH(C2:C11)日期之间
我唯一能想到的是:
=COUNTIFS(C2:C11,">="&E3,B2:B11,"<="&E3)
但这只会返回可供选择的活动数量。
任何输入都将不胜感激
这是最终价值的一个例子:
事件3或事件4,因为7/2/2012发生在两个事件的开始和结束日期之间
答案 0 :(得分:3)
我想出了这个公式:
=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
日期之间的行号数组RANDBETWEEN(1,SUMPRODUCT((E3>=B2:B11)*(E3<=C2:C11)))
生成1
与适当事件数SMALL(IF(..),RANDBETWEEN(..))
从第1步中的数组中获取随机行号。INDEX(A:A,SMALL(..))
获取相应的事件名称。答案 1 :(得分:2)
我知道这已经得到了解答,但我想提供一个稍微不同的选项,不需要数组输入(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)))