情况:我正在创建一个骰子符号“清理”公式,以便组合相似的骰子。例如:“1D6+1D6”将变为“2d6”。使事情变得复杂的是,负掷骰(如“-1D6”)不能汇总到最终结果中(意思是“1D6-1D6”不等于“0”)。为什么?因为 1D6 并不等于每次滚动的相同数字。因此,第一个(附加)骰子可能是“6”,然后惩罚骰子可能是 1,总共 (6-1)=5。
增加了复杂性……这不仅仅适用于 D6。这是整个RPG系列。 D4、D6、D8、D10、D12、D20 和 D100。
所以,我已经非常接近了!但是,公式...很长...就像,我将其复制并粘贴到 MS Word 中,它有整整两页长...你会看到...
https://docs.google.com/spreadsheets/d/14C_n53wgiQL6-rrOl-9IfXPBTMIdnsZxaZ5vmeKXsMU/edit?usp=sharing
(除了最后一分钟的 D10 问题)它有效...但是,我计划将该公式向下拖动至少 500 次,因此它会降低工作表速度。
最终公式按骰子类型分割。 (最终公式只是所有单个骰子公式的 TEXTJOIN)。
虽然我不知道缩短这个时间的解决方案,但我在写这篇文章时确实意识到也许没有必要定义每个骰子。也许按“D”之后和下一个“+”之前的唯一字符串数组排序?!?!
最佳答案
尝试:
=INDEX(REGEXREPLACE(TEXTJOIN("+", 1, FLATTEN(QUERY(TRANSPOSE(QUERY(QUERY(IFNA(TRANSPOSE({
REGEXEXTRACT(SPLIT(C5, "+"), "^\d+")*1; REGEXEXTRACT(SPLIT(C5, "+"), "D\d+");
REGEXEXTRACT(SPLIT(C5, "+"), "^-\d+")*1; REGEXEXTRACT(SPLIT(C5, "+"), "D\d+");
REGEXEXTRACT(SPLIT(C5, "+"), "D(\d+)")*1}), 0),
"select sum(Col1),Col2,'+',sum(Col3),Col4,Col5 group by Col2,Col4,Col5 order by Col5"),
"select Col1,Col2,Col3,Col4,Col5 offset 1", )),,9^9))), " |\+ 0 D\d+", ))
关于filter - Google Sheets 组合骰子的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73757619/