我正在尝试将一组表格(我通常使用骰子来得出最终结果)转换为 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")
如果有效/无效,请分享。(: