【急】如何编程让excel表格中随机生成整数

默认分类 未结 1 1584
0十九0
0十九0 2023-03-20 21:38
1条回答
  • 2023-03-20 21:54

    抽空做了一下,代码如下:

    Sub 生成随机数()

    Dim lstrow%, lstcol%, arr(), brr(), maxnum%, k%, n%

    版权归节即芝后士回答群网站或原作者音所有

    lstrow = Range("a65536").End(3).Row

    lstcol = Range("iv1").End(1).Column

    arr = Range("a1").Offset(lstrow - 1, 0).Resize(1, lstcol)

    For i = LBound(arr, 2) To UBound(arr, 2)

    maxnum = maxnum + arr(1, i)

    Next i

    ReDim brr(1 To maxnum)

    Randomize

    For i = 1 To maxnum

    有定第资光海导确许技约市府。

    brr(i) = i

    Next

    For i = 1 To maxnum * 100

    For k = 0 To maxnum - 1

    n = Int(Rnd * (maxnum - k)) + k + 1

    们出分过如机把料及即压带,叫众何值写置层满。

    t = brr(n): brr(n) = brr(k + 1): brr(k + 1) = t

    Next k

    Next i

    Range("a1").Offset(1, 0).Resize(lstrow - 2, lstcol).ClearContents

    t = 0

    m = 1

    For i = 1 To UBound(arr, 2)

    t = t + arr(1, i)

    For j = m To t

    ActiveSheet.Cells(brr(j) + 1, i) = 1

    Next j

    m = t + 1

    Next i

    End Sub

    这个代码几乎实现了全自动,你只要在相应的行数内设置数值就可以了,比如最后一行相加是30,那么只要在第32行设置值就可以了,如果最后一行相加是53,那么只在第55行设置就可以了,列数不限。不过在其它单元格内不能有值。

    做一辅助列,例如F列:

    F2=RANDBETWEEN(1,5)

    下拉至F25

    芝士回答,版权必究南百己,未经许说可,不得转状载

    A2=IF(COLUMN()=$F2,1,"")

    右拉至E2

    再一起下拉至25行

    A26=SUM(A2:A25)

    右拉至E26

    excel产生随机数帮实现

    0 讨论(0)
提交回复