我有从第三方获得的数据列表。为了简单起见,假设A列是唯一ID(字母数字),B列是分配给该ID的员工。一名员工有多个身份证,因为他们一次处理多个案件。一些唯一ID以“ AC”开头,这些ID是特殊情况。
我需要一个公式,该公式将在“原始数据”表上的A列中搜索以“ AC”开头的任何许可证号,并在我的“已分配员工”表上返回“已分配员工”名称。对于第一个具有简单索引匹配公式的对象来说,这很容易。但是,我需要它来带回第二个名字,以及那里的其他任何名字。在下面的示例中,我需要它使Paul,然后是Lee。
Column A Column B
Unique ID Assigned Employee
AC798358 Paul
90807248 Paul
AC48298 Lee
B98281 Lee
AC42795 Lee
“已分配员工”表如下:
Employee 1 Employee 2 Employee 3 Employee 4
Paul Lee
我正在使用此索引匹配公式来获取第一个返回值(保罗),但它仅适用于工作表上的第一个“ AC” ID号。
=INDEX('Assigned'!$B:$B,MATCH("AC*",'Assigned'!$A:$A,0))
我正在尝试使用此公式,该公式将通过更改“小”函数的“ k”数字来带来第一个和随后的返回值,但是它对我不起作用。
=INDEX('Assigned'!$B:$B,SMALL(IF('Assigned'!$A:$A="AC*",ROW('Assigned'!$A:$A)-ROW(INDEX('Assigned'!$A:$A,1,1))+1),1))
我知道它不喜欢这一部分:IF('Assigned'!$A:$A="AC*",
,但是我不知道如何编写它来使其工作。任何帮助,将不胜感激。
可能相关:此数据集中有很多空白行。
答案 0 :(得分:1)
有一种标准的数组公式方法,可从重复项列表中提取唯一列表。对于您的样本数据,将其放在D2中,然后按ctrl + shift + enter(又名CSE),然后向右拖动。
=INDEX($B2:$B10, MATCH(0, COUNTIF($C2:C2, $B2:$B10), 0))
您可以在此添加条件(例如IF(LEFT($ A2:$ A10,2)=“ AC”)。
=INDEX($B2:$B10, MATCH(0, IF(LEFT($A2:$A10, 2)="AC", COUNTIF($C2:C2, $B2:$B10)), 0))
这种样式的LISTUNIQUE公式需要左侧未使用的单元格(如果列为行则在上方)。如果在左侧或上方没有空间容纳未使用的单元格,则可以通过使用更常规的公式来实现列表中的第一项,然后修改第二项以将第一个用作其参考起点来避免这种情况。
'in D2
=INDEX(B2:B10, MATCH("AC*", A2:A10, 0))
'in E2 (with CSE and dragged right)
=INDEX($B2:$B10, MATCH(0, IF(LEFT($A2:$A10, 2)="AC", COUNTIF($D2:D2, $B2:$B10)), 0))
使用包装的IFERROR函数用尽匹配项时,可以避免#N / A错误。