答案1
这是一个分布公式无需 VBA
将要分配的数字放入单元格中AG5 (24). 在单元格中输入要填充的单元格数量AG4 (10)
选择一些单元格,说AB6并输入:
=ROUND(COLUMNS($A:A)/$AG$4*$AG$5,0)
在AC6进入:
=IF(COLUMNS($A:B)<=$AG$4,ROUND(COLUMNS($A:B)/$AG$4*$AG$5,0)-SUM($AB6:AB6),"")
并复制:
该公式很好地分配了数字。如果您确实需要 VBA,可以使用宏来粘贴公式。
编辑#1:
如果需要 VBA,那么尝试这个小型 UDF:
选项明确
Public Function distribute(Amount As Long, CellCount As Long)
Dim temp, i As Long, factor As Double
Dim wf As WorksheetFunction, zum As Long
ReDim temp(1 To 1, 1 To CellCount)
Set wf = Application.WorksheetFunction
zum = 0
For i = 1 To CellCount
If i = 1 Then
temp(1, i) = wf.Round(i / CellCount * Amount, 0)
zum = temp(1, i)
Else
temp(1, i) = wf.Round(i / CellCount * Amount, 0) - zum
zum = zum + temp(1, i)
End If
Next i
distribute = temp
End Function
此 UDF 返回大批,因此除非您使用的是 Excel 365,否则它应该是数组输入。