You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需VBA如何在Excel中实现TTRPG骰子滚动?替代FOR循环批量投骰方法

Excel实现TTRPG多面骰投掷的最优方案

根据你的Excel版本不同,可选择以下两种无需VBA宏的实现方案,两者都完全满足单个骰子独立投掷后加总的逻辑:

方案1:Excel 365/2021及以上版本(最简写法)

利用内置的RANDARRAY数组函数直接生成指定数量的独立随机整数,通用公式为:
=SUM(RANDARRAY(骰子数量,1,1,骰子面数,TRUE))

  • 4d6的实现代码:=SUM(RANDARRAY(4,1,1,6,TRUE))
  • 8d8的实现代码:=SUM(RANDARRAY(8,1,1,8,TRUE))
  • 支持复杂骰组直接拼接:比如投掷1d20+3d6+2的公式为=RANDARRAY(1,1,1,20,TRUE)+SUM(RANDARRAY(3,1,1,6,TRUE))+2

方案2:Excel 2019及更早旧版本(全版本兼容)

利用SUMPRODUCT+ROW(INDIRECT)模拟循环逻辑,强制RAND函数被调用对应次数生成独立随机数,通用公式为:
=SUMPRODUCT(INT(RAND()*骰子面数+1)*(--(ROW(INDIRECT("1:"&骰子数量))>0)))

  • 4d6的实现代码:=SUMPRODUCT(INT(RAND()*6+1)*(--(ROW(INDIRECT("1:4"))>0)))
  • 8d8的实现代码:=SUMPRODUCT(INT(RAND()*8+1)*(--(ROW(INDIRECT("1:8"))>0)))

进阶优化:封装成一键调用规则

如果需要频繁投掷不同骰组,可以通过自定义名称功能封装逻辑:

  1. 在任意单元格(比如A1)输入标准骰组代码,如4d6、8d8
  2. 点击「公式」选项卡-「定义名称」,名称填DICE_RESULT,引用位置填对应版本的公式,直接在其他单元格输入=DICE_RESULT即可自动读取A1的骰组代码输出结果

注意事项

  • 两类公式均使用易失性函数,按F9即可刷新获得新的投掷结果
  • 所有随机数独立生成,不会出现「单次投掷结果乘以骰子数量」的错误
  • 无需启用宏,可直接保存为普通xlsx格式文件,无安全警告

内容的提问来源于stack exchange,提问作者MrMusAddict

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 10:30:03