Excel vlookup扩展

时间:2015-06-15 15:36:10

标签: excel

我目前有一个包含三列的Excel工作表

        id      annotation     person_id
        1        yes             1
        1        no              2
        1        yes             3

我正在尝试将另一个工作表上的格式重新格式化为一个看起来像这样的表:

     id       1       2      3
     1       yes     no      yes

我正在使用这个

vlookup: =VLOOKUP(A2,sheet2!$F$1:$G$10,2,FALSE)  

其中a2是id,f $ 1:g $ 10是该特定人的数据范围。

目前我每人都这样做,而且很乏味 - 有成千上万的人。我需要一种方法将person_id合并到我的vlookup中,这样,如果列标题中的person_id与工作表2中的person_id匹配且两个ID匹配,则插入注释。

2 个答案:

答案 0 :(得分:0)

你可以这样做 首先在第一个表=B2&D2

上创建一个新列
      A        B        C               D 
  1|           id       annotation      person_id    
  2|  11       1        yes             1            
  3|  12       1        no              2           
  4|  13       1        yes             3           

然后在第二个表上使用像这样的公式

=VLOOKUP(B16&C15;A2:C4;3;FALSE)

      B    C    D    F 
14         1    2    3
15    1    yes  no   yes
16    2         

答案 1 :(得分:0)

这似乎是INDEX-MATCH公式的良好候选者,其中包含多条件MATCH()公式以计算两个ID条件。下面的公式将原始数据放在A1:C4中,重新格式化的数据放在E1:H2中,因此您需要更改引用:

在单元格F2中,我输入了{=INDEX($A$1:$C$4, MATCH(1, ($A$1:$A$4=$E2)*($C$1:$C$4=F$1), 0), 2)},产生了

      [A]   [B]         [C]         [D]   [E]   [F]   [G]   [H]
[1]   id    annotation  person_id         ID    1     2     3 
[2]   1     yes         1                 1     yes   no    yes
[3]   1     no          2
[4]   1     yes         3

$E2F$1上的相对引用允许跨行和列填充公式。

稍微解释一下公式:

  • INDEX()公式中,第一个参数$A$1:$C$4是原始数据“table”(数组)。
  • 第二个参数搜索值($A$1:$A$4=$E2)*($C$1:$C$4=F$1) 完全(由第三个参数0给出)等于1的行。
    • ($A$1:$A$4=$E2)*($C$1:$C$4=F$1)是两个TRUE/FALSE语句的乘法,当1中的主ID等于{{1}中的ID值时,它等于col A }, E2中的人员ID等于col C中的列标题。
  • 最后一个参数F1是数据表中用于查找结果的列。
    • 您可能需要考虑使用其他2公式根据列标题动态识别查找列; 例如,而不是MATCH(),请使用2

重要说明:

  • 需要使用MATCH("annotation", $A$1:$C$1, 0)将公式作为数组公式输入。
  • 此方法假定Ctrl+Shift+Enter&的组合。 id是唯一的。

另请注意,使用命名范围时,此公式更清晰:例如(使用建议的第二个person_id函数而不是MATCH()),2。< / p>