Excel MATCH无法找到单元格值,但可以找到固定值

时间:2018-03-15 20:59:06

标签: indexing excel-formula match excel-2010 lookup

我正在使用excel 2010工作簿,该工作簿使用一系列表格为我生成计算。一个这样的计算直到我昨晚在一张完全不相关的桌子上做出的改变,我不能让它再次运作。

TL; DR

  • Table_ChallengeCalcEasyMediumHardDeadlyNone需要显示Table_Difficulty的相应值同名的,将指定播放器的Table_ChallengeCalc[Level]值与Table_Difficulty[Level]中匹配的Table_Difficulty引用相匹配。
  • 列匹配到Table_ChallengeCalc[Level] >= 9,然后开始随机为表中的所有玩家分配值(如果不仅仅是#N/A)。
  • LOOKUPVLOOKUP和嵌套 到目前为止INDEX/MATCH尚未成功。

以下是我正在使用的内容: Faux Working

为了便于说明,我们将重点关注Easy表格下的Challenge Calculations列,其编号为Table_ChallengeCalc。首先,在单元格M4中运行的公式:

  

= IFERROR(LOOKUP(L4,[等级],Table_Difficulty [简易]),0)

这应该做的是查看单元格中左边的值(L4),找到Difficulty ChartTable_Difficulty)上的相应值,然后显示该级别的经验值。在这种情况下,它应该在难度图表上引用“级别7”,并返回值“350”。这个首先出现,但即使其中一个玩家的等级达到9级或以上......

Table Breaking

...每个玩家在Easy列下显示350作为他们的分值,除了9级玩家。此外,如果我将任何玩家置于等级20,它就会直接返回0(如果我删除IFERROR,则只显示#N/A)。

LV20 Breaking

如果我将公式中的[Level]替换为Table_Difficulty[Level]Easy下的所有单元格都会返回#N / A,无论玩家级别如何。

我真的不知道发生了什么,我想解决这个问题。但是,我也考虑过这可能是因为我正在使用数组。从那里进行试验,如果我使用VLOOKUP公式,我会得到相同的结果,所以我抓了它,然后尝试了嵌套的INDEX/MATCH,并且无法使其工作。如果LOOKUP不起作用,我认为无论如何这都是理想的选择。

暂时关注MATCH公式:

  

= MATCH(L4,Table_Difficulty [等级],0)

上述公式为#N/A。但是,如果我只用L4替换公式中的7,就像这样......

  

= MATCH(7,Table_Difficulty [等级],0)

...它返回Table_Difficulty上的正确行(7)。尽管如此,我还是需要它能够接受一个可能在以后更改的变量值(当玩家升级时),所以这不是一个选项。

我错过了什么?

编辑:在某些帮助下,我们发现由于某种原因,L4并未将自己视为7,而是"7"。使用=L4=7我们会获得FALSE,如果我们=L4=B10则相同。 但是,如果我们执行=L4="7",则结果返回TRUE。我不知道如何解决这个问题,但这是我想的。

1 个答案:

答案 0 :(得分:0)

  

编辑:所以在一些帮助下,我们发现由于某些原因L4不是   将自己视为7,而不是" 7"。通过使用= L4 = 7,我们得到一个FALSE,   如果我们这样做= L4 = B10。但是,如果我们做= L4 =" 7",结果   返回TRUE。我不知道如何解决这个问题,但它已经解决了   我想是的。

考虑到这一点,您可以采取几种方法。您可以考虑确保源数据采用数字格式,在强制数字格式的公式中添加一些验证,或者忽略查找以代替固定的INDEX(),前提是表格将保持静态显示。 / p>

在公式本身的验证方面,你会看到用数值计算数值,最常见的是减去0或乘以1:

=MATCH(L4-0,Table_Difficulty[Level],0) / =MATCH(L4*1,Table_Difficulty[Level],0)

只要字符串可以转换为数字,就应该处理好。

对于INDEX()方法,因为表是静态的,您知道第1级是第一个索引行,所以您根本不需要使用MATCH(),因为级别将是要返回的行:

=INDEX(Table_Difficulty[Easy],L4)(如果由于数据类型而引发错误,则为,L4-0)