Excel:轮盘赌的动态单元格引用
Excel: Dynamic cell reference for Roulette
我尝试构建一个轮盘赌 (0-36) 并且有一个关于单元格引用的问题:我想定义当有人投注红色时会发生什么并且 excel 将应用红色的定义仅在需要时。 (更笼统:我想定义所有轮盘投注选项,例如单数、纵队投注、角球等,并在需要时应用该定义。)
看图:两个人都押红色,但只有一个结果是正确的:D2(正确的红色赌注会翻倍)。 D3 没有加倍,因此是错误的。
公式:
D2: =IF(B2="Red";
C5;IF(B2="Black";C6;C2))
在这个公式中,我想引用基础公式 C5 的工作原理。 (在这种情况下,只有 B3="Red";C5
部分是相关的。)
D3: =IF(B3="Red";
C5;IF(B3="Black";C6;C3))
在这个公式中,我想引用基础公式 C5 什么不起作用。 (在这种情况下,只有 B3="Red";C5
部分是相关的。)
C5:=IF(OR($A=1;$A=3;$A=5;$A=7;$A=9;$A=12;$A=14;$A=16;$A=18;$A=19;$A=21;$A=23;$A=25;$A=27;$A=30;$A=32;$A=34;$A=36);
C2*2;-C2)
(假定的)问题:C5 公式引用了 C2(见最后两个元素)。
我的目标:每当投注部分(例如 B 列)中有 "Red" 条目时,它将应用(已更正)Definition Red C5
。为了做到这一点,C5 公式的 C2*2;-C2
部分必须根据 "Red" 下注所在的单元格进行更改:无论 B2 还是 B10 是 "Red",它都应该应用基础公式。而且,它应该像我的例子一样为多个投注应用正确的公式。
我希望你能理解我想说的。如果有人能帮助我,我会很高兴:-)
如果我正确理解所有内容,可能无法使用单个单元格来表示获胜金额 C5
和失败金额 C6
。原因是,每次投注的赢额和输额都会有所不同。这就是第 2 行起作用的原因。它在中奖金额公式 C5
中使用第 2 行赌注 C2
。您可以通过在中奖金额公式 C5
中使用 C3*2; -C3
来使第 3 行起作用,但是 D2
会被破坏!
这是两个使用 Excel 2010 的屏幕截图,可能会有帮助(这也在 LibreOffice 5.1.6.2 中进行了测试)。这是一个部分解决方案,虽然它不是最好的。然而,这个想法应该使用内置函数(没有VBA)。
示例 1
示例 2
备注
如果投注者的投注类型最终成为赢家,则此解决方案需要构建详尽的投注类型列表(第 I 列)以及支付乘数(第 K 列)。 J 列包含计算结果数字 A2
是否会导致投注类型获胜 (TRUE
) 或失败 (FALSE
)。我用于所示示例的计算是:
- 红色:
=OR($A=1,$A=3,$A=5,$A=7,$A=9,$A=12,$A=14,$A=16,$A=18,$A=19,$A=21,$A=23,$A=25,$A=27,$A=30,$A=32,$A=34,$A=36)
- 也许 cleaner alternative:
=OR($A={1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36})
- 黑色:
=OR($A=2,$A=4,$A=6,$A=8,$A=10,$A=11,$A=13,$A=15,$A=17,$A=20,$A=22,$A=24,$A=26,$A=28,$A=29,$A=31,$A=33,$A=35)
- 也许 cleaner alternative:
=OR($A={2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35})
- 低:
=AND($A>=1,$A<=18)
- 高:
=AND($A>=19,$A<=36)
- 奇数:
=MOD($A,2)=1
- 甚至:
=MOD($A,2)=0
- 一打:
=AND($A>=1,$A<=12)
- 第二打:
=AND($A>=13,$A<=24)
- 第三打:
=AND($A>=25,$A<=36)
我不是轮盘赌专家,所以我可能不太了解它们......但我猜你已经知道获胜的公式了。
我的方法的问题是创建详尽的获胜列表(I、J 和 K 列)需要付出很多努力。可能有更优雅的解决方案,但我必须考虑更多。
现在您可以获取每个投注者的投注类型(B 列)并使用 MATCH
函数从所有投注类型集合 (I2:I10
) 中找到其对应的索引。此过程的结果显示在 C 列中。D 列只是公式的说明,因此您无需将其包含在电子表格中。
获得索引后,您可以将其与 INDEX
函数一起使用来查看 J2:J10
以查看投注类型是否为赢家。如果是赢家,您还可以使用索引从 K2:K10
中找到合适的支付乘数,并将其乘以 E 列中的赌注。如果不是赢家,则结果是赌注的损失。此过程的结果显示在 F 列中。G 列只是公式的说明,因此您无需将其包含在电子表格中。
请记住,随着您添加更多投注类型,I、J 和 K 列的范围将需要扩大。因此,您最终会得到更大的范围,而不是 I2:I10
、J2:J10
和 K2:K10
。
我在 this answer 中更彻底地解释了 MATCH
和 INDEX
的功能,不过如果您在某处的联机手册中查找它们可能会更好。
我尝试构建一个轮盘赌 (0-36) 并且有一个关于单元格引用的问题:我想定义当有人投注红色时会发生什么并且 excel 将应用红色的定义仅在需要时。 (更笼统:我想定义所有轮盘投注选项,例如单数、纵队投注、角球等,并在需要时应用该定义。)
看图:两个人都押红色,但只有一个结果是正确的:D2(正确的红色赌注会翻倍)。 D3 没有加倍,因此是错误的。
公式:
D2: =IF(B2="Red";
C5;IF(B2="Black";C6;C2))
在这个公式中,我想引用基础公式 C5 的工作原理。 (在这种情况下,只有 B3="Red";C5
部分是相关的。)
D3: =IF(B3="Red";
C5;IF(B3="Black";C6;C3))
在这个公式中,我想引用基础公式 C5 什么不起作用。 (在这种情况下,只有 B3="Red";C5
部分是相关的。)
C5:=IF(OR($A=1;$A=3;$A=5;$A=7;$A=9;$A=12;$A=14;$A=16;$A=18;$A=19;$A=21;$A=23;$A=25;$A=27;$A=30;$A=32;$A=34;$A=36);
C2*2;-C2)
(假定的)问题:C5 公式引用了 C2(见最后两个元素)。
我的目标:每当投注部分(例如 B 列)中有 "Red" 条目时,它将应用(已更正)Definition Red C5
。为了做到这一点,C5 公式的 C2*2;-C2
部分必须根据 "Red" 下注所在的单元格进行更改:无论 B2 还是 B10 是 "Red",它都应该应用基础公式。而且,它应该像我的例子一样为多个投注应用正确的公式。
我希望你能理解我想说的。如果有人能帮助我,我会很高兴:-)
如果我正确理解所有内容,可能无法使用单个单元格来表示获胜金额 C5
和失败金额 C6
。原因是,每次投注的赢额和输额都会有所不同。这就是第 2 行起作用的原因。它在中奖金额公式 C5
中使用第 2 行赌注 C2
。您可以通过在中奖金额公式 C5
中使用 C3*2; -C3
来使第 3 行起作用,但是 D2
会被破坏!
这是两个使用 Excel 2010 的屏幕截图,可能会有帮助(这也在 LibreOffice 5.1.6.2 中进行了测试)。这是一个部分解决方案,虽然它不是最好的。然而,这个想法应该使用内置函数(没有VBA)。
示例 1
示例 2
备注
如果投注者的投注类型最终成为赢家,则此解决方案需要构建详尽的投注类型列表(第 I 列)以及支付乘数(第 K 列)。 J 列包含计算结果数字 A2
是否会导致投注类型获胜 (TRUE
) 或失败 (FALSE
)。我用于所示示例的计算是:
- 红色:
=OR($A=1,$A=3,$A=5,$A=7,$A=9,$A=12,$A=14,$A=16,$A=18,$A=19,$A=21,$A=23,$A=25,$A=27,$A=30,$A=32,$A=34,$A=36)
- 也许 cleaner alternative:
=OR($A={1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36})
- 也许 cleaner alternative:
- 黑色:
=OR($A=2,$A=4,$A=6,$A=8,$A=10,$A=11,$A=13,$A=15,$A=17,$A=20,$A=22,$A=24,$A=26,$A=28,$A=29,$A=31,$A=33,$A=35)
- 也许 cleaner alternative:
=OR($A={2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35})
- 也许 cleaner alternative:
- 低:
=AND($A>=1,$A<=18)
- 高:
=AND($A>=19,$A<=36)
- 奇数:
=MOD($A,2)=1
- 甚至:
=MOD($A,2)=0
- 一打:
=AND($A>=1,$A<=12)
- 第二打:
=AND($A>=13,$A<=24)
- 第三打:
=AND($A>=25,$A<=36)
我不是轮盘赌专家,所以我可能不太了解它们......但我猜你已经知道获胜的公式了。
我的方法的问题是创建详尽的获胜列表(I、J 和 K 列)需要付出很多努力。可能有更优雅的解决方案,但我必须考虑更多。
现在您可以获取每个投注者的投注类型(B 列)并使用 MATCH
函数从所有投注类型集合 (I2:I10
) 中找到其对应的索引。此过程的结果显示在 C 列中。D 列只是公式的说明,因此您无需将其包含在电子表格中。
获得索引后,您可以将其与 INDEX
函数一起使用来查看 J2:J10
以查看投注类型是否为赢家。如果是赢家,您还可以使用索引从 K2:K10
中找到合适的支付乘数,并将其乘以 E 列中的赌注。如果不是赢家,则结果是赌注的损失。此过程的结果显示在 F 列中。G 列只是公式的说明,因此您无需将其包含在电子表格中。
请记住,随着您添加更多投注类型,I、J 和 K 列的范围将需要扩大。因此,您最终会得到更大的范围,而不是 I2:I10
、J2:J10
和 K2:K10
。
我在 this answer 中更彻底地解释了 MATCH
和 INDEX
的功能,不过如果您在某处的联机手册中查找它们可能会更好。