我有一个Excel表格,其数据格式如下
A B
1 KEY VALUE
2 Apple Golden
3 Orange Navel
4 Banana Yellow
5 Apple Granny Smith
6 Orange Blood
我要执行的操作是使用唯一键,但在其旁边水平打印其对应的值。我已经有一个看起来像这样的工作表:
A B
1 KEY VALUE
2 Apple Golden
3 Orange Navel
4 Banana Yellow
但是我想要的是:
A B C
1 KEY VALUE1 VALUE2
2 Apple Golden Granny Smith
3 Orange Navel Blood
4 Banana Yellow
我现在的公式是{=INDEX('$B$2:$B$6,MATCH(<unique key>,$A$2:$A$6,0))}
“唯一键”是第二张表中的单元格引用。此公式成功地为每个键打印了第一个值,但是我希望其他匹配项在该行中向下填充。那可能吗?
如果您在各列中设置公式以处理您认为会发现的'VALUE'个实例,那么以下方法将起作用。因此,您需要在“ VALUE”列中设置公式。
使用包含条件IF()的数组公式检查您的键值,然后使用SMALL()函数返回与该值匹配的第n行。这告诉您,对于键APPLE,该值出现在表的第1行和第5行中。然后使用INDEX()从这些行中获取值。
此页面具有示例的详细信息。您的示例将水平运行而不是垂直运行,但是否则这是一个相同的问题。http://fiveminutelessons.com/learn-microsoft-excel/use-index-lookup-multiple-values-list#sthash.7XGIoc9N.dpbs
我唯一建议的调整是在最后,当添加IF(ISERROR()...等)时,执行此操作的更短/更简便的方法是使用IFERROR()函数,因此您不必这样做不必重复您的长公式。
例如,如果我在A13:B17中有您的表(不包括行标题),则我的结果表以E13:E15中的KEY值开头,因此E13中为“ Apple”,然后是F13中的第一个公式(以查找首次出现的“ Apple”的值是(数组公式,因此Ctrl - Shft - Enter):
{= IFERROR(INDEX($ EX($ A $ 13:$ B $ 17,SMALL(IF($ A $ 13:$ A $ 17 = $ E13,ROW($ A $ 13:$ A $ 17)),ROW(1:1))-12 ,2),“”)}
结果将是“金色”。
然后在G13中,除了ROW(2:2)之外,其他都是一样的。H13将使用ROW(3:3)。依此类推,可以根据需要创建任意数量的列,以覆盖任何KEY的最大预期值。
然后,除了第一个IF()条件检查KEY值之外,下面的行将相同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句