首页 > 解决方案 > 在 n , m 之间随机选择“x”列中的数字

问题描述

我在一列中有数字(即 A 列中的 1 到 10)和另一列中的一些数字(即 E 列中的六个数字)。我想将 E 列的数字随机放置在 B 列中,以便 Ai 和 Bi 之间的绝对差在 D1 和 D2 中的 n 和 m 之间。我使用 AGGREGATE 函数

AGGREGATE(15,6,$E$2:$E$7/(And(ABS($E$2:$E$7-A2)>=$D$1;ABS($E$2:$E$7-A2)<=$D$2)),RANDBETWEEN(1,SUMPRODUCT(--(And(ABS($E$2:$E$7-A2)>=$D$1;ABS($E$2:$E$7-A2)<=$D$2))))

但是不要跑

标签: excel-formula

解决方案


AND函数会将您的 Array 展平为单个项目: =AND({1,2,4,8}>2,{1,2,3,4}<7)将变为=AND({False,False,True,True},{True,True,True,False}),但下一步是=FALSE

你想用--and*代替,像这样:=--(({1,2,4,8}>2)*--({1,2,3,4}<7)变成=({False,False,True,True})*--({True,True,True,False})then ={0,0,1,1}*{1,1,1,0}, finally={0,0,1,0}

另外:而不是SUMPRODUCT在中间,只使用一对会更简单/更快COUNTIFS吗?

=AGGREGATE(15,6,$E$2:$E$7/--((ABS($E$2:$E$7-$A2)>=$D$1)*(ABS($E$2:$E$7-$A2)<=$D$2)),RANDBETWEEN(1,COUNTIFS($E$2:$E$7,">=" & ($A2+$D$1),$E$2:$E$7,"<="&($A2+$D$2))+COUNTIFS($E$2:$E$7,">=" & ($A2-$D$2),$E$2:$E$7,"<="&($A2-$D$1))))

推荐阅读