在 Excel 中自动生成随机表

在 Excel 中自动生成随机表

我正在尝试将一组表格(我通常使用骰子来得出最终结果)转换为 Excel 以节省时间。

所以这是掷骰子时的表格

Contents(roll d6)   -  treasure
1-2 = empty       -    1/6
3-4 = monster     -    3/6
5 = special     -      nil
6 = trap        -      2/6

我知道要做第一列我可以使用 INDEX 和 RANDBETWEEN 函数,但我不确定如何让宝藏列工作。

我很确定它会使用一系列 if 语句(例如:如果怪物掷出 d6 如果 1-3 返回宝藏),但我是否需要为怪物、空、陷阱和特殊设置单独的公式,或者可以一次生成所有内容?

答案1

您可以使用以下任一方法:

=IF(RANDBETWEEN(1,6)<=2,  "Empty with "&  IF(RANDBETWEEN(1,6)=1,  "treasure",  "no treasure"),
 IF(RANDBETWEEN(1,6)<=4,  "Monster with "&  IF(RANDBETWEEN(1,6)<=3,  "tresure","no treasure"),
 IF(RANDBETWEEN(1,6)<=5,  "Special",
 "Trap with "&  IF(RANDBETWEEN(1,6)<=2,  "tresure","no treasure")
 )))

它在公式编辑器中的结构看起来像上面那样,以便每个部分IF()都有清晰的布局。

然而,许多人更喜欢使用IFS(),因为布局可以更清晰,并且各个行本身都是完整的,因此很容易理解、编辑和添加或删除:

=IFS(
      RANDBETWEEN(1,6)<=2,  "Empty with "&  IF(RANDBETWEEN(1,6)=1,  "treasure",  "no treasure"),
      RANDBETWEEN(1,6)<=4,  "Monster with "&  IF(RANDBETWEEN(1,6)<=3,  "tresure","no treasure"),
      RANDBETWEEN(1,6)<=5,  "Special",
      TRUE,  "Trap with "&  IF(RANDBETWEEN(1,6)<=2,  "tresure","no treasure")
    )

您可以为显示的六次“投掷”添加多个骰子或多种类型的骰子,从而增加复杂性(显示了六次,但每次结果只会“发生”两次)。结构化尤其适合这种情况,当然也IFS()可以使用标准结构。nested IF()

您没有显示早期版本标签,因此您可能可以LET()使用它。如果您使用LET(),则上述操作只需使用“RoomRoll”和“TreasureRoll”之类的内容即可完成如果你这样做,你就不能像我一样在评估掷骰结果的方式上走捷径。例如,你必须实际测试范围“3 或 4”,而不能使用测试“<=4”(这是可行的,因为如果是 1 或 2,就不需要测试 3-4 范围)。为了避免公式工作部分的复杂性,你可能更喜欢使用“Roll1”、“Roll2”等。前者更适合未来的需求,但后者现在更容易。所以...选择...

当然,您可以选择将两个结果(房间和宝藏)分开,在不同的单元格中滚动以得到它们。但这与直接掷骰子的想法略有不同。意识到您可以按照要求一步到位地获得两者,可以更好地利用该工具。

答案2

假设掷出的数字在 A1 中。在 B2 中:

=CHOOSE(A1,"[Empty]","[Empty]","monster","monster","special","trap")

如果有效/无效,请分享。(:

相关内容