excel中的骰子符号

时间:2014-06-16 22:24:01

标签: excel dice

我在excel中遇到问题,我需要知道更好的人的帮助。

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

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

类似于Rolldice(A1),它会计算它(如果3d8+2+4d8给出它会给出958之间的数字

Basicaly 1d6表示1骰子有六张脸,因此是16之间的随机数。 2d6意味着1d6 + 1d6(因此是212之间的数字)

我不介意结果是否需要我在braquets之间设置骰子,如:(3d6)+2+(4d8)

它应该能够添加,减去或倍增骰子

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

我会非常感谢能够做到这一点的人。

我希望自己足够清楚。如果需要,请随时询问规格。

致以最诚挚的问候,

ps:感谢我解决了我缺乏英语的问题。看到评论并从中学习它真是太棒了!

2 个答案:

答案 0 :(得分:0)

我会看看RAND和RANDBETWEEN函数

设置一个表格,列出骰子选择1卷,2卷等,并使用这些函数计算输入值。

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

首先不要担心注释,让功能正常工作。

然后,您可以使用字符串CONCATENATE格式化输出以构建表示法。

条件格式化仅在excel单元格中具有不同值时使用,并且可能在此处不适用。

答案 1 :(得分:0)

假设我们在 A

列中有骰子表达式

高亮显示细胞并运行这个小宏:

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

宏将每个骰子表达式转换为标准Excel公式,并将公式放在列 B

列中的相邻单元格中

以下是输入/输出

的一个小例子

sample

修改#1:

以下是用户定义函数 - UDF

形式的相同逻辑
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:

从统计意义上讲,可以获得 Min,Max, Average 。例如,在 B1 中输入:

=RollDice($A$1)

然后从 B3 复制 B2 B1000

最后使用:

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