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:I10J2:J10K2:K10

我在 this answer 中更彻底地解释了 MATCHINDEX 的功能,不过如果您在某处的联机手册中查找它们可能会更好。