使用串联的 VLOOKUP 出现 Excel 错误

问题描述 投票:0回答:2

我为我的数学课建立了一个电子表格来模拟“Monty Hall”概率问题(处理条件概率)。我不想深入研究 VBA,所以我尝试了所有公式。

问题本身是根据游戏节目“让我们做个交易”建模的,其中参赛者选择 3 扇门中的 1 扇以找到隐藏的奖品。主持人 (Monty) 然后打开一扇空门(不是玩家选择的门)。问题是参赛者是否应该将他们原来的选择切换到剩下的门。答案是肯定的,有 2/3 的成功概率。

为了在 excel 中对此建模,我有 4 列:“隐藏的奖品”、“您选择的奖品”、“Monty Opens”和“Pays to switch?”。 A列和B列使用RANDBETWEEN(1,3),其余为逻辑匹配。最艰难的是“Monty Opens”。这是我有一个错误的地方。

这是截图:https://i.stack.imgur.com/o5tWb.jpg

“Monty Opens”列必须检查前两列的值,然后根据隐藏奖品的位置和玩家选择的门返回一个值。我将 IF 逻辑与 VLOOKUP 一起使用。如果玩家选择有奖品的门,那么我使用较小的阵列来提供空门。如果玩家最初的选择和奖品门不同(发生概率为 2/3),那么 Monty 必须打开第三扇门,而这扇门不能是前两扇门。使用 VLOOKUP 时,这种情况会更难。经过一些尝试和错误后,我构建了一个带有“辅助列”的数组,在最左侧的列中包含“隐藏奖品”和“您选择”的串联值。这是为了“欺骗”VLOOKUP 一次查看两列。它似乎在 3-1 的情况下有效。它应该匹配 3-1-2 但抛出 3-1-1,我不明白为什么。经过一些故障排除后,我很确定它会将 3-1 的串联值与第 23 行匹配,从而为第 4 列返回“1”。我真的不确定为什么会发生这种情况,因为它似乎适用于其他情况.

我意识到复杂的 IF 语句可能不是最好的,我猜有一些简单的 VBA,但现在我陷入了困境......

感谢阅读,我感谢任何建议。

excel-formula concatenation vlookup spreadsheet probability
2个回答
0
投票

没有进入逻辑,我已经可以看到 2 个可能的语法错误。

  1. VLOOKUP
    需要将第四个参数设置为
    FALSE
    以仅获取精确值。我认为你就是这种情况。请参阅帮助以获取更多信息。
  2. VLOOKUP
    必须对第一列进行排序。也许这就是导致最后一行错误值的原因。
    检查这些,如果问题仍然存在,请回来。

0
投票

Excel问题:你答错的原因是缺少第四个参数。您必须告诉

VLOOKUP
搜索确切的值。正确的公式应该是:
=IF(A2=B2,VLOOKUP(A2,$L$5:$M$7,2,FALSE),VLOOKUP(A2&B2,$K$10:$N$15,4,FALSE))

逻辑问题:
如果奖品和您的选择之间的门不同,您的答案就可以正常工作,因为蒙蒂只有一个选择。但如果门是相同的,蒙蒂总是选择同一扇门。你应该保持一致并随机化 Monty 的选择。

建议:

  1. 我会用这个公式:

    =LET(totalDoors,SEQUENCE(3), doorsLeft,FILTER(totalDoors,(totalDoors<>A2)*(totalDoors<>B2)), INDEX(doorsLeft,RANDBETWEEN(1,COUNT(doorsLeft))))

    如果您需要帮助理解它,请告诉我。

  2. 如果你不关心随机化蒙蒂的选择,这个公式更简单:

    =MAX(SEQUENCE(3)*(SEQUENCE(3)<>A2)*(SEQUENCE(3)<>B2))

© www.soinside.com 2019 - 2024. All rights reserved.