【问题标题】:Excel: Dynamic cell reference for RouletteExcel:轮盘赌的动态单元格参考
【发布时间】:2018-10-11 23:34:53
【问题描述】:

我尝试构建一个轮盘赌 (0-36) 并且有一个关于单元格引用的问题:我想定义当有人下注红色时会发生什么,并且 Excel 将仅在需要时应用红色的定义。 (更笼统地说:我想定义所有轮盘赌投注选项,例如 Odd、Column bet、Corner 等,并在需要时应用定义。)

看图片:两个人下注红色,但只有一个结果是正确的: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$2=1;$A$2=3;$A$2=5;$A$2=7;$A$2=9;$A$2=12;$A$2=14;$A$2=16;$A$2=18;$A$2=19;$A$2=21;$A$2=23;$A$2=25;$A$2=27;$A$2=30;$A$2=32;$A$2=34;$A$2=36);C2*2;-C2)

(假定的)问题:C5 公式引用了 C2(参见最后两个元素)。

我的目标:只要投注部分中有“红色”条目(例如 B 列),它就会应用(更正后的)Definition Red C5。为了做到这一点,C5 公式的C2*2;-C2 部分必须根据“红色”赌注所在的单元格进行更改:B2 或 B10 是否为“红色”,它应该应用基础公式。而且,它应该像我的示例中那样对多个投注应用正确的公式。

我希望你能理解我想说的话。如果有人可以帮助我,我会很高兴:-)

【问题讨论】:

    标签: excel excel-formula roulette-wheel-selection


    【解决方案1】:

    如果我正确理解所有内容,则可能无法使用单个单元格来表示获胜金额C5 和失败金额C6。原因是,每次下注都会有不同的赢额和输额。这就是第 2 行有效的原因。它在中奖金额公式C5 中使用第 2 行赌注C2。您可以通过在中奖金额公式C5 中使用C3*2; -C3 来使第3 行工作,但随后D2 将被破坏!

    这里有两个使用 Excel 2010 的屏幕截图可能会有所帮助(这也在 LibreOffice 5.1.6.2 中进行了测试)。这是一个部分解决方案,尽管它公认不是最好的。但是,这个想法应该使用内置函数(无 VBA)。

    示例 1

    示例 2

    备注

    如果投注者的投注类型最终成为赢家(K 列),则此解决方案需要构建详尽的投注类型列表(第 I 列)以及支付乘数。 J 列包含计算结果数字 A2 是否会导致投注类型的赢 (TRUE) 或输 (FALSE)。我用于所示示例的计算是:

    • 红色:=OR($A$2=1,$A$2=3,$A$2=5,$A$2=7,$A$2=9,$A$2=12,$A$2=14,$A$2=16,$A$2=18,$A$2=19,$A$2=21,$A$2=23,$A$2=25,$A$2=27,$A$2=30,$A$2=32,$A$2=34,$A$2=36)
    • 黑色:=OR($A$2=2,$A$2=4,$A$2=6,$A$2=8,$A$2=10,$A$2=11,$A$2=13,$A$2=15,$A$2=17,$A$2=20,$A$2=22,$A$2=24,$A$2=26,$A$2=28,$A$2=29,$A$2=31,$A$2=33,$A$2=35)
    • 低:=AND($A$2>=1,$A$2<=18)
    • 高:=AND($A$2>=19,$A$2<=36)
    • 奇数:=MOD($A$2,2)=1
    • 偶数:=MOD($A$2,2)=0
    • 第一打:=AND($A$2>=1,$A$2<=12)
    • 第二打:=AND($A$2>=13,$A$2<=24)
    • 第三打:=AND($A$2>=25,$A$2<=36)

    我不是轮盘赌专家,所以我可能不太正确...但我猜你已经知道获胜的公式了。

    我的方法的问题在于,创建详尽的获胜列表(I、J 和 K 列)需要付出很多努力。可能有更优雅的解决方案,但我必须考虑更多。


    现在您可以使用MATCH 函数获取每个投注者的投注类型(B 列)并从所有投注类型的集合 (I2:I10) 中找到其对应的索引。此过程的结果显示在 C 列中。D 列只是公式的说明,因此您无需将其包含在电子表格中。

    获得索引后,您可以将其与INDEX 函数一起使用以查看J2:J10 以查看投注类型是否为赢家。如果是赢家,您也可以使用索引从K2:K10 中找到合适的派彩乘数,然后乘以 E 列中的赌注。如果不是赢家,则结果是赌注的损失。此过程的结果显示在 F 列中。G 列只是公式的说明,因此您无需将其包含在电子表格中。

    请记住,随着您添加更多投注类型,I、J 和 K 列的范围需要扩大。因此,您将得到更大的范围,而不是 I2:I10J2:J10K2:K10

    我在 this answer 中更彻底地解释了 MATCHINDEX 函数,尽管您可能会更好地在某处的在线手册中查找它们。

    【讨论】:

    • 感谢您的快速回复。我花了一点时间来理解 MATCH 和 INDEX。还有一点要充分理解:我们是否使用 MATCH 函数来获取支付乘数的行? (示例结果公式中是否有错误?第二个INDEX中不应该是“K”而不是“J”吗?)
    • @Philip 好观察!我在“结果公式”列中确实有错误。我认为这是因为我在将文本放入其中后添加了一个列,而我忘记了重置文本。我将更新屏幕截图,但第一个 INDEX(超过 J2:J10)决定了赌注是赢还是输。然后第二个INDEX(超过K2:K10)获得TRUE 案例(即获胜案例)的支付乘数。我为这个错误道歉。
    • @Philip 另外,您是正确的,MATCH 函数基本上可以根据投注类型获得要使用的正确行。对于 B 列中的每个投注,它会从单元格 I2:I10 中找到相应的投注类型并返回相应的索引...因此,“红色”应返回 1 的索引,“黑色”应返回 @987654367 的索引@、Low 应返回 3 的索引等。然后,这些索引值与上面解释的 INDEX 函数一起使用,以确定赌注是否为获胜赌注,如果需要,则确定支付乘数。
    • 感谢您的更新,感谢您在 cmets 中的回答,再次感谢您的解决方案。它工作得很好:-)
    猜你喜欢
    • 1970-01-01
    • 2018-07-04
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 2015-12-28
    相关资源
    最近更新 更多