潘绿亮
发表于 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
有大神吗