Excel计算相对位置

时间:2016-03-22 17:59:07

标签: excel

我是新来的,我想我会问一个在微软帮助中心找不到的问题,而且我无法找到解决办法。

我正在尝试计算事物的概率,而且在大多数情况下,Excel对它非常有帮助。我在添加其他变量时遇到了问题。

我的表单目前正在比较4个8面骰子的骰子卷。 2个骰子有一些符号,另外两个骰子有不同的符号。有些符号相互否定,最后我得到一个伤害输出数字。当比较2或3个骰子时,可能的组合是有限的。 3个骰子有512种可能性。现在有4个,有4096种可能性,它只会变得更高。这就是我需要我所要求的原因。

有一种方法让细胞了解当前位置是否参考了它目前所处的细胞块?

例如:我正在计算一个重新滚动的可能性,但它只会发生一半的时间,这意味着有12个可能的单个骰子有重新选择。因此,我正在开发的当前可能性表将是96个单独的表,每个表有96个可能的结果。表1/1将比较2骰子攻击滚动表的第一行与2骰子防御滚动表的第一行。第1行此表的第1列将给出Attack表的R1C1与Defense表的R1C1的结果。该表的R1C2将给出Attack表的R1C1与Defense表的R1C2的结果。该表的R2C1将给出攻击表的R1C2与防御表的R1C1等的结果......

我知道如何对表进行引用,所以我已经做到了这一点,一旦我构建了一个表,我可以复制并粘贴它来构建另一个96.但是当我比较更多的骰子时,这将很快处理起来太麻烦了。如果单元格有一种方法可以理解它在给定的单元格块中的相对位置(即我的示例表的R2C1理解它是R2C1),那么它将极大地减少我的负载,并允许我继续建立这些概率表,以便更好地理解某些领域的权衡。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这是我为基本骰子计算%编写的Excel UDF。它可能无法直接用于带有负面/条件结果的示例,但它确实具有测试多个骰子和侧面骰子数量的灵活性,因此它可能会激发您一些想法。如前所述,如果您给出了确切的参数,您可能会得到一个具体的例子。我的例子返回%。它目前仅测量单个结果的概率,但您可以为每个单元=DiceRollOdds(3,2)+DiceRollOdds(4,2)执行多个公式(以测量3和4的概率),或者您可以修改代码以获得更具体的结果。

Function DiceRollOdds(OutcomeToCheck As Integer, NumberOfDice As Integer, Optional SidesOnDice As Integer) As Double
Dim SuccessResult As Integer, FailedResult As Integer, SingleDice As Integer, RollResult As Integer

If SidesOnDice = 0 Then
    SidesOnDice = 6
End If

Dim Rolls As Integer

For Rolls = 1 To (SidesOnDice ^ NumberOfDice)
RollResult = 0
    For SingleDice = 0 To NumberOfDice - 1

        RollResult = Int(Rolls / SidesOnDice ^ SingleDice) Mod SidesOnDice + 1 + RollResult
    Next SingleDice

If RollResult = OutcomeToCheck Then
    SuccessResult = SuccessResult + 1
Else
    FailedResult = FailedResult + 1
End If

Next Rolls

DiceRollOdds = SuccessResult / (FailedResult + SuccessResult)

End Function