作者:乔山办公网日期:
返回目录:excel表格制作
L3=INDEX(A3:K3,INDEX(SMALL(IF(A3:K3,COLUMN(A:K)),COLUMN(A:K)),RAND()*COUNT(A3:K3)+1))
或=OFFSET(A3,,INDEX(SMALL(IF(A3:K3,COLUMN(A:K)-1),COLUMN(A:K)),RAND()*COUNT(A3:K3)+1))
都是百数组度公式,知道A3:K3数据须为版数权值
Function tieba(a1)
times = 0
Do While True
b1 = Int(Rnd() * (a1 - 1)) + 1
c1 = Int(Rnd() * (a1 - 1)) + 1
times = times + 1
If a1 = b1 + c1 Then
tieba = b1
Exit Do
End If
If times > 400 Then
tieba = "400次内无法找到满足条件的数"
Exit Do
End If
Loop
End Function
-------------------------------------------------------------------
在vba编辑器里新建个模块,把以上代码复制进e68a84e799bee5baa6e997aee7ad94337去就可以了。以后就可以在单元格使用这个函数了,比如说:单元格A1是你的a1,你可以填上100,单元格B1写上公式:=tieba(A1),那么单元格C1就是=100-B1。虽然单元格C1是用两个单元格的值计算的,但是从代码上可以知道,B1和C1确实是随机生成的。我加了一个循环次数判断,如果超过了还不能匹配的话就终止,以防死循环!
那你到底是想弄几个随机数加起来等于a1啊
L3=INDEX(A3:K3,INDEX(SMALL(IF(A3:K3,COLUMN(A:K)),COLUMN(A:K)),RAND()*COUNT(A3:K3)+1))----适用数值格道式
L3=INDEX(A3:K3,INDEX(SMALL(IF(A3:K3<>"",COLUMN(A:K)),COLUMN(A:K)),RAND()*COUNTA(A3:K3)+1))----文字回、数字答通用
或=OFFSET(A3,,INDEX(SMALL(IF(A3:K3,COLUMN(A:K)-1),COLUMN(A:K)),RAND()*COUNT(A3:K3)+1))----适用数值格式
或=OFFSET(A3,,INDEX(SMALL(IF(A3:K3<>"",COLUMN(A:K)-1),COLUMN(A:K)),RAND()*COUNTA(A3:K3)+1))----文字、数字通用