骰子符号在Excel中
我有一个问题在Excel中,我需要从谁知道更好的人的帮助。
快速的故事:我是一个rolist,我正在做excel字符表,我需要做dice notation
calcul。
我需要能够写入像3d6+2d4+6
或3d8+2+3d9-2d6
或任何组合的单元格。 然后在另一个单元格中计算结果。
像Rolldice(A1)
东西,它会计算出来(如果3d8+2+4d8
被赋予,它会给出一个介于9
和58
之间的数字)
基本1d6
表示1
骰子,有6个面,因此是1
到6
的随机数。 2d6
将意味着做1d6 + 1d6
(因此2
至12
之间的数字)
我不介意,如果结果要求我设置布雷克之间的骰子,如: (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)
然后从B3到B1000复制B2
最后使用:
=MAX(B1:B1000) =MIN(B1:B1000) =AVERAGE(B1:B1000)
我会看看RAND和RANDBETWEEN的function
build立一个表格,列出骰子select1卷,2卷等,并使用这些函数来计算input的值。
保持input与计算表分开。 单独的input从计算和单独的输出。 您甚至可以在工作簿中使用不同的工作表。
首先不要担心这个符号,让函数起作用。
然后,您可以使用stringCONCATENATE格式化输出来构build符号。
只有在excel单元格中有不同的值时,才会使用条件格式,这可能不适用于此。