有没有人遇到过LOOKUP()的奇怪行为?

时间:2014-12-10 07:15:24

标签: excel excel-2007

注意:我不需要使用Excel解决实际问题的解决方案。我想了解并讨论这种行为。我希望看到,如果其他人可以重现这种情况并让他们意识到这一点。

  • 调试问题的情况极为简化。
  • 我在合作环境中使用 Excel 2007

在以两周为基础的计算中,我必须填写有效期为一个月的两周间隔的数字。例如,12月的前两周,我必须再次使用价值12,而不是一月的第一周到第几周,我必须再次使用1,再过两周。

enter image description here

因此,每个两周的时间段都有一个列,其中包含当前月份的字段(屏幕截图中为绿色区域)。该月有效的值位于第二个表(红色区域)中。要检索当前期间的值,我使用LOOKUP()调用:

(A2): =LOOKUP(A1;$A$9:$H$9;$A$10:$H$10)
...
(P2): =LOOKUP(P1;$A$9:$H$9;$A$10:$H$10)

正如您在屏幕截图中看到的那样,该函数会破坏并检索错误值。

为了测试,我用国际拼音字母而不是月份名称再现了这种情况。因此:

(A5): =LOOKUP(A4;$A$12:$H$12;$A$13:$H$13)
...

这一次,该功能运作良好。因此我想,它与月份的名称有关。也许他们有一些内部表示,尽管事实上,单元格被格式化为" text"。

我已经在红色区域测试了垂直向量而不是水平向量。他们导致了同样的情况。

注意:

我最终使用HLOOKUP()VLOOKUP()解决了原始问题。在那里我找到了另一条线索。如果[not_exact_match]已提交或设置为true,则两者都显示相同的行为,但如果强制执行exact_match则工作正常。那么, Februar 如何与 Dezember 大致匹配?

1 个答案:

答案 0 :(得分:2)

请参阅http://office.microsoft.com/en-gb/excel-help/lookup-function-HP010342671.aspx

要使LOOKUP功能正常工作,要查找的数据必须按升序排序。

“Dezember”,“Januar”,“Februar”等文本的情况并非如此......

如果您使用真实日期01.12.2013,01.01.2014,01.02.2014,...并将它们格式化为“MMMM”,那么它应该有效。当然,lookup_value也必须采用这种形式。

与VLOOKUP相同但不完全匹配。 http://office.microsoft.com/en-gb/excel-help/vlookup-function-HP010343011.aspx

如果range_lookup为TRUE或被省略,则table_array第一列中的值必须按升序排序;否则,VLOOKUP可能无法返回正确的值。