Excel LOOKUP匹配错误的单元格

我正在尝试在Excel中完成一个相当简单的任务,但是没有得到想要的结果。我有一个简单的时间表,通过填写一张简单的表格,我可以将一组教练分配给一系列比赛。这是缩小版本:

  Match | John | Pete | Chris |       
 -------|------|------|-------|------- 
      1 | X    |      |       | John  
      2 |      | X    |       | Pete  
      3 | A    |      | X     | Chris 
      4 | X    |      | A     | Chris (!)
      5 |      | X    | A     | Pete  

传奇:X:将执教; A:可用。

我使用该表注册可用性,然后在每行中将A更改为X,以选择实际指导比赛的人。

为进行概述,我决定添加一列,其中将显示所选教练。我使用以下公式:=LOOKUP("X"; B2:D2; B$1:D$1)用于第2行,并将其复制到其他行,以便每行的行号与放置公式的行相对应。

令我惊讶的是,第4场比赛分配给了Chris,而John拥有X,而Chris只有A。

当我阅读Microsoft's documentation on LOOKUP时,我注意到了一些事情:

  1. LOOKUP具有矢量形式和数组形式。 microsoft建议将HLOOKUP用于数组形式,但我使用矢量形式。我不认为HLOOKUP对我有用,因为它只在指定数组的第一行中查找值,而我的第一行包含要返回的值。
  2. 它显示为:“仅包含一行或一列的范围。” ,还包括”重要提示:lookup_vector中的值必须按升序放置:..., -2,-1、0、1、2,...,AZ,FALSE,TRUE;否则,LOOKUP可能不会返回正确的值。大写和小写文本是等效的。“

我认为2.是导致问题的原因。我不确定如何对A2:A4之类的范围参数进行排序。 microsoft记录了SORT function,但它是beta。另外,我认为对搜索行进行排序将使匹配变得混乱。

我找到的解决方法是将代码更改为A:分配和B:备份,其中选择A和B为按字母顺序递增。如果我更改公式以使用查找值“ A”,则会得到以下信息:

  Match | John | Pete | Chris |       
 -------|------|------|-------|------- 
      1 | A    |      |       | John  
      2 |      | A    |       | Pete  
      3 | B    |      | A     | Chris 
      4 | A    |      | B     | John  
      5 |      | A    | B     | Pete  

这是我想要的结果。

有人可以阐明这种完全违反直觉的行为和/或描述实现此目的的替代方法吗?

注意:

  1. 我只在每一行中放1 X。
  2. 我已经在microsoft Excel for Office 365 MSO(16.0.11328.20362)64位和microsoft Excel 2016 MSO(16.0.12130.20232)32位中看到了这一点。
z81452418 回答:Excel LOOKUP匹配错误的单元格

根据文档,LOOKUP完全按照设计的目的进行工作。您应该使用INDEXMATCH

=INDEX($B$1:$D$1;MATCH("X";B2:D2;0))

MATCH的最后一个0参数表示您正在寻找完全匹配的数据,因此不需要对数据进行排序。

,

LOOKUP进行二进制搜索,因此返回A。我们在Chandoo.org论坛上进行了很长的讨论,您可以在这里阅读: https://chandoo.org/forum/threads/how-vlookup-works.18378/

基本上,它一直在寻找一个相等或更低的值,然后继续对数据进行切片,因此需要对数据进行排序。

您仍然可以通过如下调整来使用LOOKUP。

=LOOKUP(2;1/(B2:D2="X");B$1:D$1)

本文链接:https://www.f2er.com/3153173.html

大家都在问