返回列表中的第二个(及后续)唯一名称

时间:2019-02-19 21:12:02

标签: excel-formula

我有从第三方获得的数据列表。为了简单起见,假设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*",,但是我不知道如何编写它来使其工作。任何帮助,将不胜感激。

可能相关:此数据集中有很多空白行。

1 个答案:

答案 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))

enter image description here

使用包装的IFERROR函数用尽匹配项时,可以避免#N / A错误。