我目前有一个包含三列的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匹配,则插入注释。
答案 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
$E2
和F$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>