Excel在日期之间的范围内选择随机值

时间:2014-04-11 18:46:23

标签: excel random countif

我的示例设置如下图所示:

enter image description here

我试图在单元格F3中制作一个公式:

"在A2:A11之间选择随机事件,其中用户输入日期(E3)在START(B2:B11)和FINISH(C2:C11)日期之间

我唯一能想到的是:

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

但这只会返回可供选择的活动数量。

任何输入都将不胜感激

这是最终价值的一个例子:

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

2 个答案:

答案 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 )。

  1. IF((E3>=B2:B11)*(E3<=C2:C11),ROW(A2:A11))返回E3介于STARTFINISH日期之间的行号数组
  2. RANDBETWEEN(1,SUMPRODUCT((E3>=B2:B11)*(E3<=C2:C11)))生成1与适当事件数
  3. 之间的兰特数
  4. SMALL(IF(..),RANDBETWEEN(..))从第1步中的数组中获取随机行号。
  5. 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)))