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_ChallengeCalcEasyMediumHardDeadlyNone需要显示来自Table_Difficulty的同名值,匹配分配玩家的Table_ChallengeCalc[Level]值匹配Table_Difficulty[Level] 中的Table_Difficulty 引用。 列匹配直到Table_ChallengeCalc[Level] >= 9,然后开始随机分配值,如果不只是#N/A,给桌上的所有玩家。 LOOKUPVLOOKUP 和嵌套 INDEX/MATCH目前还没有成功。

这是我正在处理的内容:

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

=IFERROR(LOOKUP(L4,[Level],Table_Difficulty[Easy]),0)

这应该做的是查看紧靠其左侧的单元格中的值(L4),在Difficulty ChartTable_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中找到最大值并返回两个第一个相邻的单元格值?

格式化后查找/替换未找到单元格值

Excel:使用单元格值作为 SQL 查询的参数

熊猫:将特定的 Excel 单元格值读入变量

finereport7计算单元格有值填报提交数据库拿不到单元格值

Excel VBA 单元格值显示为整数