如何在 Excel 2013 中编写公式,在一个单元格中执行 randbetween 函数 n 次,其中 n 等于另一个单元格的值?
例如,单元格 A2 计算 randbetween(1,10),返回值为 6。如何让单元格 B2 执行 randbetween (1,8) 六次并显示每次计算的值,以便得到六个介于 1 和 8 之间的数字?B2 中的结果最好显示类似 8、6、5、4、6、7 的内容(如果 A2 中的 randbetween 给出的结果为 6)。
答案1
如果没有RANDARRAY
@Excellll中描述的功能回答我们可以使用 SUMPRODUCT 和数组公式:
把这个放在 B2 中:
=SUMPRODUCT(RANDBETWEEN(ROW($ZZ$1:INDEX($ZZ:$ZZ,A2))^0,ROW($ZZ$1:INDEX($ZZ:$ZZ,A2))^0+7)*10^(ROW($ZZ$1:INDEX($ZZ:$ZZ,A2))-1))
这可能需要在退出编辑模式时使用 Ctrl-Shift-Enter 而不是 Enter。
如果有人拥有 Office 2019,CONCAT
但没有,RANDARRAY
我们可以在一个单元格中完成此操作:
=CONCAT(RANDBETWEEN(ROW($ZZ$1:INDEX($ZZ:$ZZ,A2))^0,ROW($ZZ$1:INDEX($ZZ:$ZZ,A2))^0+7))
这可能需要在退出编辑模式时使用 Ctrl-Shift-Enter 而不是 Enter。
答案2
考虑以下用户定义函数:
Option Explicit
Public Function MultiRand(times As Long, bottom As Long, top As Long) As String
Application.Volatile
Dim i As Long, wf As WorksheetFunction
Set wf = Application.WorksheetFunction
MultiRand = ""
For i = 1 To times
MultiRand = MultiRand & CStr(wf.RandBetween(bottom, top))
Next i
End Function
使用示例:
用户定义函数 (UDF) 非常容易安装并使用:
- Alt+F11 打开 VBE 窗口
- Alt++I Alt打开M一个新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx
到消除UDF:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
到使用Excel 中的 UDF:
=MultiRand(A1,A2,A3)
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有关 UDF 的详细信息,请参阅:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能使其工作!
答案3
Office 365 的解决方案:
您可以使用RANDARRAY
函数来执行此操作。函数输出的每个随机数都将位于不同的单元格中。
例如,如果A2
是您需要的随机数的数量,则可以将以下内容放入其中B2
。
=RANDARRAY(1,A2,1,8,TRUE)
这将创建 1 到 8 之间的 6 个随机整数,并将它们分布在范围内B2:G2
。
答案4
使用连接,一个例子:=RANDBETWEEN(1,8)&", "&RANDBETWEEN(1,8)