Excel MATCH 找不到单元格值但可以找到固定值
Posted
技术标签:
【中文标题】Excel MATCH 找不到单元格值但可以找到固定值【英文标题】:Excel MATCH can't find cell value but can find fixed value 【发布时间】:2018-08-24 19:59:32 【问题描述】:我正在编写一个 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
目前还没有成功。
这是我正在处理的内容:
为了便于说明,我们将重点关注Challenge Calculations
表下的Easy
列,其编码为Table_ChallengeCalc
。一、单元格M4
中运行的公式:
=IFERROR(LOOKUP(L4,[Level],Table_Difficulty[Easy]),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[Level],0)
以上公式得出#N/A
。但是,如果我将公式中的L4
替换为7
,就像这样......
=MATCH(7,Table_Difficulty[Level],0)
... 它返回 Table_Difficulty
(7) 上的正确行。尽管这很好,但我需要它能够接受一个以后可能会改变的变量值(随着玩家升级),所以这不是一个选项。
我错过了什么?
编辑:在一些帮助下,我们发现出于某种原因L4
并没有将自己视为7
,而是"7"
。通过使用=L4=7
,我们得到一个FALSE
,如果我们使用=L4=B10
,也是一样的。 然而,如果我们执行=L4="7"
,结果返回TRUE
。我不知道如何解决这个问题,但我猜是这样。
【问题讨论】:
如果您手动选择范围而不是Table_Difficulty[Level]
,是否有效?
不,同样的结果。
如果你把 L4 称为 sheet_name!L4 呢?
是的,同样的事情
这真的很奇怪,我从来没有听说过它的行为方式。可能关卡列有隐藏字符,试试擦掉再重写?
【参考方案1】:
编辑:所以在一些帮助下,我们发现由于某种原因 L4 不是 将自己视为 7,而不是“7”。通过使用 =L4=7 我们得到一个 FALSE, 如果我们做 =L4=B10 也是一样的。但是,如果我们这样做 =L4="7",结果 返回真。我不知道如何解决这个问题,但它是 我猜的。
考虑到这一点,您可以采取几种方法。您可以查看确保源数据采用数字格式,向公式添加一些验证以强制采用数字格式,或者忽略查找来代替固定的INDEX()
,前提是表格将保持显示状态。
就公式本身的验证而言,您会考虑用值计算数字,最常见的是减去 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)
,如果由于数据类型引发错误)
【讨论】:
以上是关于Excel MATCH 找不到单元格值但可以找到固定值的主要内容,如果未能解决你的问题,请参考以下文章
如何在Excel中找到最大值并返回两个第一个相邻的单元格值?