怎样编写实现以下条件的宏编程 在excel应用

来源:百度知道 编辑:UC知道 时间:2024/09/22 03:46:22
我想用excel在B列填充生成100个数据,数据范围是1~5的整数,而且该列数据的平均值必须是我规定的数值,如A1中的数值。
听说那需要用宏编程来完成,具体怎样实现啊,程序怎么写?可以在excel里面的vb编辑器里编写吗?求助高手

按ALT+F11打开vba编辑器
插入模块,然后粘贴以下代码,然后回到excel界面,按alt+F8,看到“随机数填充”,点击执行即可,数字范围和填充区域可在程序中指定,由于是用循环搜索,大概要等待10秒左右才可以得出结果,祝你好运
Public Sub 随机数填充()
Dim target As Range
avg = Range("A1") '平均值,可以自己指定
Set target = Range("B1:B100") '填充区域,自己指定

limin = 1 '数据下限自己指定
limax = 5 '数据上限自己指定
m = (avg - limin + 1) / (limax - limin + 1)
Dim a() As Integer
ReDim a(1 To target.Rows.Count) As Integer
For i = 1 To target.Rows.Count
a(i) = Int(Rnd() * limax + limin)
Next 'a为空时不能取平均值
Randomize '保证每次随机数列不一样

While Application.WorksheetFunction.Average(a) <> avg
For i = 1 To target.Rows.Count
a(i) = Int(Rnd() ^ (1 / m - 1) * limax + limin)
Next
Wend
target.Value = Application.Transpose(a) '一维数组赋给range要转换成行
End Sub

打开excel后,开始录制宏,然后对b列