Excel计算相对位置

Excel计算相对位置,excel,Excel,我是新来的,我想我会问一个在微软帮助中心肯定找不到的问题,我也找不到解决这个问题的方法 我试图计算事物的概率,在大多数情况下,Excel在这方面非常有用。但是,当我添加额外的变量时,我遇到了问题 我的工作表目前正在比较4个8面骰子的骰子卷。2个骰子有特定的符号,另外两个骰子有不同的符号。一些符号相互抵消,最后我得到一个伤害输出数。当比较2或3个骰子时,可能的组合是有限的。3个骰子,有512个可能性。现在有4个,有4096个可能性,而且只会越来越高。这就是为什么我需要我所要求的 有没有办法让一个单

我是新来的,我想我会问一个在微软帮助中心肯定找不到的问题,我也找不到解决这个问题的方法

我试图计算事物的概率,在大多数情况下,Excel在这方面非常有用。但是,当我添加额外的变量时,我遇到了问题

我的工作表目前正在比较4个8面骰子的骰子卷。2个骰子有特定的符号,另外两个骰子有不同的符号。一些符号相互抵消,最后我得到一个伤害输出数。当比较2或3个骰子时,可能的组合是有限的。3个骰子,有512个可能性。现在有4个,有4096个可能性,而且只会越来越高。这就是为什么我需要我所要求的

有没有办法让一个单元格了解它当前所在的单元格块的当前位置

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

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


非常感谢您的帮助

这是我为基本骰子计算%编写的Excel自定义项。它可能不会直接用于负面/有条件结果的示例,但它确实具有测试多个骰子和骰子的边数的灵活性,因此它可能会激发您的一些想法。正如前面的评论所建议的,如果您给出确切的参数,您可能会得到一个具体的示例。我的示例返回%的值。它目前只测量单个结果的概率,但您可以对每个单元格执行多个公式
=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

我以前做过这样的事情来检查事情的可能性。无论解决方案是否可行,我强烈建议您停止使用Excel,使用编程语言(如VBA)。在二维网格上执行多维IF-THEN块是非常痛苦的。我同意@Grade'Eh'Bacon的观点,VBA绝对是一条必经之路。我在VBA中进行了一些风险战模拟,几乎没有遇到什么麻烦。编写VBA以便将输出发送到Excel中的行很容易。这对您有帮助吗<代码>=单元格(“地址”)感谢您的反馈。我精通VBA for Access,它与Excel有很大不同吗?我想我还需要知道从哪里开始。我试图计算重掷骰子之类的东西,在可选重掷骰子的情况下,我计算出只有3个攻击骰子,就有46656个骰子组合。如何利用VBA来减少腿部工作?@Raven19528 VBA就是VBA。应用程序对象模型当然不同,但在这两种情况下编写纯VBA子对象或函数是相同的。如果你描述了骰子背后的规则和你想要完成的事情,那么你可能会得到一个更集中的答案。很明显,你们可以设置一个循环,通过所有可能的骰子滚动,但你们将如何使用这样一个循环似乎不清楚。