怎样在EXCEL中的数值固定除同一个位置的数值得出随机的结果?

2025-03-22 06:20:39
推荐回答(5个)
回答1:

本问题用公式是可实现的,但要用到循环引用,所以要启用迭代计算,具体方法如下:

  1. 文件选项——公式,勾选“启用迭代计算”后确定。

  2. 在C2中输入公式:

=IF(ROW()>B$2+1,"",ROW()-1)

下拉到若干单元格,如C50(以B2中可能的最大数值来决定,行数略大于可能的最大数即可)。

D2中输入公式:

=IF(B$2="","",IF(C2="","",IF(OR(D2="",SUM(D:D)<>A$2),RANDBETWEEN(1,A$2/B$2*2),D2)))

下拉到与C列一样的行数。

现在删除B2中的数据,填入新的数据,C列得到每个数的序号,D列得到对应的数据。

如图,E2中用求和公式验证:

E2=SUM(D:D)

PS:随机数按最大取A2按B2平均分后的2倍来考虑的,可自己修改最值的范围。但经测试,如果最大值就取A2,循环计算很难得到结果。

回答2:

假定笔数50以内,D2中输入:=A2-SUM(D3:D50)

D3中输入:=IF(ROW(1:1)>$B$2-1,"",INT(RAND()*$A$2/($B$2-1)*1.65)),然后下拉填充到你的最大笔数。

D2有负数出现时,F9刷新取值。

回答3:

新建一个宏,命名为M,可以设个快捷键,这样以后只要在表格中按快捷键就能直接生成随机数了,也不需要另放一个按钮,编辑宏,写入以下代码:

Sub M()

'Ctrl + m

Dim sum, n As Integer

Dim tmp As Integer

sum = Cells(2, 1)

n = Cells(2, 2)

For i = 1 To n

Cells(i + 1, 3) = i

Next i

For i = 1 To n - 1

tmp = Int((sum / (n - i) * Rnd))

sum = sum - tmp

Cells(i + 1, 4) = tmp

Next i

Cells(n + 1, 4) = sum

End Sub

回答4:

你说的那必须用代码来实现。

回答5:

vba可以完成。。。