在一个单元格中运行 randbetween 函数 n 次,其中 n = 另一个单元格中 randbetween 函数的结果

在一个单元格中运行 randbetween 函数 n 次,其中 n = 另一个单元格中 randbetween 函数的结果

如何在 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) 非常容易安装并使用:

  1. Alt+F11 打开 VBE 窗口
  2. Alt++I Alt打开M一个新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将随之保存。如果您使用的是 2003 之后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx

消除UDF:

  1. 调出如上所示的 VBE 窗口
  2. 清除代码
  3. 关闭 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)

相关内容