潘绿亮 发表于 2021-10-18 12:10:07

弄好了,很强!能再请教下,如果26~29换其他、30~35换其他、3个26~29换成1个或2个,要怎么改吗?

高建波师悦未来校园 发表于 2021-10-18 15:56:45

这种问题,换范围很容易,要改变指定范围的个数,不同的个数公式的改法都不一样,可以看成是组合排列问题,如果不懂这个原理很难改的下面在原有公式上稍微改动一下举列:
更改后的公式,选中一列10个单元格输入公式三键结束,如:A1:A10,
=
MOD(
SMALL(
    IF({1;0},
    -1^RANDBETWEEN({9,9,9,9,9},99)*RANDBETWEEN({9,9,9,9,9},99),
    RANDBETWEEN({9,9,9,9,9},99)*{-1,0,0,0,1}+{0,1,2,3,0})
    /1%%
    +RANDBETWEEN({30,30,30,30,30;26,30,26,30,26}*10,{35,35,35,35,35;29,35,29,35,29}*10+9),
ROW(1:10)),
1000)
/10
(注意:以下公式是错误的)
橙色部分用来更改范围,红色部分和绿色底纹用来更改指定范围的个数。
下面将范围改为40-50,其中40-44占2个且不相邻:
=
MOD(
SMALL(
    IF({1;0},
    RANDBETWEEN({9,9,9,9,9},99),
    RANDBETWEEN({9,9,9,9,9},99)*{1,0,1,0,1}+{1,1,1,2,1})
    /1%%
    +RANDBETWEEN({45,45,45,45,45;45,40,45,40,45}*10,{50,50,50,50,50;50,44,50,44,50}*10+9),
ROW(1:10)),
1000)
/10
其中注意的一点,删掉了:-1^RANDBETWEEN({9,9,9,9,9},99)*

韩之卓韦 发表于 2021-10-19 05:34:36

RANDBETWEEN({9,9,9,9,9},99),
    RANDBETWEEN({9,9,9,9,9},99)*{1,0,1,0,1}+{1,1,1,2,1})
这部分是为了返回两行5列才这么写的。如果返回一列或者一行,不需要这么写两遍。
另外就是这个逻辑,应该是把两个数字固定排在第一和第二了吧?之前 -1那个数组是为了打乱顺序才加的

杨眉吐气 发表于 2021-10-23 20:27:31

其实这里之所以写成 {1,0,1,0,1},是因为在尝试理解你的公式思路后,参考排列后的结果写的。
也就是说两个0之间用一个1隔开,比较直观

炽热的心 发表于 2021-10-30 01:06:08

我没看附件,只看公式,这样写是不行的。两个特殊的数字固定排在一起了。位置固定是第一个第二个没有隔开,也没乱序

山旮旯出来的 发表于 2021-10-30 08:10:37

谢谢提醒,确实如你所言,两个特珠数字确实在一起了

张楗立 发表于 2021-11-2 07:43:56

这样写应该没有问题了
=
MOD(
SMALL(
    IF({1;0},
    -1^RANDBETWEEN({9,9,9,9,9},99)*RANDBETWEEN({9,9,9,9,9},99),
    RANDBETWEEN({9,9,9,9,9},99)*{1,1,0,0,1}+{0,0,-1,-1,0})
    /1%%
    +RANDBETWEEN({45,45,45,45,45;45,45,45,40,40}*10,{50,50,50,50,50;50,50,50,44,44}*10+9),
ROW(1:10)),
1000)
/10

廖敏仪 发表于 2021-11-5 16:06:55

VBA更好处理

紫睛两个小丑 发表于 2021-11-9 11:47:05

有大神吗

九月莲花 发表于 2021-11-10 10:53:22

有大神吗
页: 1 [2] 3 4
查看完整版本: 求助大佬:随机生成数字且随机排列