骰子符号在Excel中

我有一个问题在Excel中,我需要从谁知道更好的人的帮助。

快速的故事:我是一个rolist,我正在做excel字符表,我需要做dice notation calcul。

我需要能够写入像3d6+2d4+63d8+2+3d9-2d6或任何组合的单元格。 然后在另一个单元格中计算结果。

Rolldice(A1)东西,它会计算出来(如果3d8+2+4d8被赋予,它会给出一个介于958之间的数字)

基本1d6表示1骰子,有6个面,因此是16的随机数。 2d6将意味着做1d6 + 1d6 (因此212之间的数字)

我不介意,如果结果要求我设置布雷克之间的骰子,如: (3d6)+2+(4d8)

它应该能够添加,减less或乘以骰子

1dX + 1dX or 1dX - 1dX or 1dX * 1dX

我会非常感激那些设法做到这一点的人。

我希望我已经足够清楚了。 如果需要的话可随时询问规格。

最好的祝福,

ps:谢谢你解决我缺乏英语的问题。 看到评论并从中吸取教训是非常棒的!

假设我们在列A中有骰子expression式

轻点细胞并运行这个小macros:

 Sub DiceXlator() Dim r As Range, v As String, NewForm As String, deemode As Boolean Dim dee As String dee = "d" deemode = False For Each r In Selection v = r.Value NewForm = "=" For i = 1 To Len(v) ch = Mid(v, i, 1) If ch = dee Then NewForm = NewForm & "*RANDBETWEEN(1," deemode = True Else If Not IsNumeric(ch) And deemode Then deemode = False NewForm = NewForm & ")" End If NewForm = NewForm & ch End If Next i If deemode Then NewForm = NewForm & ")" End If r.Offset(0, 1).Formula = NewForm Next r End Sub 

该macros将每个骰子expression式转换为一个标准的Excel公式,并将该公式放置在列B中的相邻单元格中

这是input/输出的一个小例子

样品

编辑#1:

这是用户定义函数UDF)forms的相同逻辑

 Public Function RollDice(r As Range) As Variant Application.Volatile Dim v As String, NewForm As String, deemode As Boolean Dim dee As String dee = "d" deemode = False v = r.Value NewForm = "=" For i = 1 To Len(v) ch = Mid(v, i, 1) If ch = dee Then NewForm = NewForm & "*RANDBETWEEN(1," deemode = True Else If Not IsNumeric(ch) And deemode Then deemode = False NewForm = NewForm & ")" End If NewForm = NewForm & ch End If Next i If deemode Then NewForm = NewForm & ")" End If RollDice = Evaluate(NewForm) End Function 

编辑#2:

在统计意义上可以得到最小值,最大值平均值 。 例如在B1中input:

 =RollDice($A$1) 

然后从B3B1000复制B2

最后使用:

 =MAX(B1:B1000) =MIN(B1:B1000) =AVERAGE(B1:B1000) 

我会看看RAND和RANDBETWEEN的function

build立一个表格,列出骰子select1卷,2卷等,并使用这些函数来计算input的值。

保持input与计算表分开。 单独的input从计算和单独的输出。 您甚至可以在工作簿中使用不同的工作表。

首先不要担心这个符号,让函数起作用。

然后,您可以使用stringCONCATENATE格式化输出来构build符号。

只有在excel单元格中有不同的值时,才会使用条件格式,这可能不适用于此。