有没有人遇到LOOKUP()的奇怪行为?
注:我不需要解决Excel的实际问题要解决的问题。 我想了解和讨论这个行为。 我想看看,如果别人能够重现这种情况,并让他们意识到这一点。
- debugging问题的情况极其简单。
- 我在一个合作的环境中使用Excel 2007
在一个为期两周的计算中,我必须填写为期两个星期的有效期为一个月的数字。 例如十二月的前两个星期,我必须再次使用价值12
,第二个两个星期,比一月份的第一到第二周,我必须再用1
两个星期。
因此,每两个星期有一个当前月份的字段(截图中的绿色区域)。 该月有效的值在第二个表格(红色区域)中。 要检索当前期间的值,我使用LOOKUP()
调用:
(A2): =LOOKUP(A1;$A$9:$H$9;$A$10:$H$10) ... (P2): =LOOKUP(P1;$A$9:$H$9;$A$10:$H$10)
正如你在屏幕截图中所看到的那样,这个函数会造成严重的后果,并且会检索到错误的值。
为了testing,我用国际音标而不是月份名称复制了情况。 因此:
(A5): =LOOKUP(A4;$A$12:$H$12;$A$13:$H$13) ...
这一次,function运作良好。 所以我想,这跟几个月的名字有关。 也许他们有一些内部表示,尽pipe事实上,单元格被格式化为“文本”。
我已经在红色区域testing了垂直向量而不是水平面。 他们导致相同的情况。
注意:
我终于通过使用HLOOKUP()
和VLOOKUP()
解决了原来的问题。 在那里我发现了另一个线索。 如果[not_exact_match]
被提交或设置为true,则两者显示相同的行为,但如果exact_match
被强制执行,则工作正常。 那么, Februar怎么能和Dezember大致相当呢?
请参阅http://office.microsoft.com/en-gb/excel-help/lookup-function-HP010342671.aspx
为使LOOKUP函数正常工作,被查找的数据必须按升序sorting。
文本“Dezember”,“Januar”,“Februar”,…
如果你使用真实date01.12.2013,01.01.2014,01.02.2014,…和格式为“MMMM”,那么它应该工作。 当然,lookup_value也必须是这种forms。
与VLOOKUP相同的问题,而不是完全匹配。 http://office.microsoft.com/en-gb/excel-help/vlookup-function-HP010343011.aspx
如果range_lookup为TRUE或省略,则table_array的第一列中的值必须按照升序排列; 否则,VLOOKUP可能不会返回正确的值。