我正在使用excel 2010工作簿,该工作簿使用一系列表格为我生成计算。一个这样的计算是直到我昨晚在一张完全不相关的桌子上做出的改变,我不能让它再次运作。
TL; DR :
Table_ChallengeCalc
列Easy
,Medium
,Hard
,Deadly
,None
需要显示Table_Difficulty
的相应值同名的,将指定播放器的Table_ChallengeCalc[Level]
值与Table_Difficulty[Level]
中匹配的Table_Difficulty
引用相匹配。 Table_ChallengeCalc[Level] >= 9
,然后开始随机为表中的所有玩家分配值(如果不仅仅是#N/A
)。 LOOKUP
,VLOOKUP
和嵌套
到目前为止INDEX/MATCH
尚未成功。以下是我正在使用的内容:
为了便于说明,我们将重点关注Easy
表格下的Challenge Calculations
列,其编号为Table_ChallengeCalc
。首先,在单元格M4
中运行的公式:
= IFERROR(LOOKUP(L4,[等级],Table_Difficulty [简易]),0)
这应该做的是查看单元格中左边的值(L4
),找到Difficulty Chart
(Table_Difficulty
)上的相应值,然后显示该级别的经验值。在这种情况下,它应该在难度图表上引用“级别7”,并返回值“350”。这个首先出现,但即使其中一个玩家的等级达到9级或以上......
...每个玩家在Easy
列下显示350作为他们的分值,除了9级玩家。此外,如果我将任何玩家置于等级20,它就会直接返回0(如果我删除IFERROR
,则只显示#N/A
)。
如果我将公式中的[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
。我不知道如何解决这个问题,但这是我想的。
答案 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)
)