我想要实现的是:
我尝试过HLOOKUP和VLOOKUP,但一次仅限于一行/列:(
答案 0 :(得分:0)
您的问题与此链接中的主题非常相似:http://www.mrexcel.com/forum/excel-questions/673515-finding-value-multiple-column-array-returning-column-header-excel-2003-a.html
关于此问题的特定版本,以下是一个可行的公式。请注意B1
中的公式是数组公式,必须使用CTRL + SHIFT + ENTER输入。
公式的想法是:
COLUMN
。MAX
返回的最大列值。INDEX
返回列标题。由于#3,如果有重复项,您只能从最大的列中获取。
=INDEX($E$1:$G$1,MAX(IF($E$3:$G$6=A1,COLUMN($E$3:$G$6)-COLUMN($E$1)+1)))
(this is an array formula that must be entered with CTRL+SHIFT+ENTER)
可以在B列中安全地复制该公式。
与细胞着色的相同图像。
如果您希望此公式在不匹配时有效,则需要稍微修改。您需要从INDEX
调用中拆分数组公式。问题是如果没有匹配,MAX
将返回0.通常INDEX
将忽略0,除了在数组公式中它似乎返回第一个值。在这种情况下,需要两个公式,第一个是数组公式,第二个是正常公式。
[B1, array formula] =MAX(IF($E$3:$G$6=A1,COLUMN($E$3:$G$6)-COLUMN($E$1)+1))
[C1, normal] =INDEX($E$1:$G$1,B1)
通过这些,您将在遗失的搜索中获得#VALUE!
。
答案 1 :(得分:0)
我建议您使用不同的布局作为默认值,以便于使用VLOOKUP。不是每个人都有一个列,他们的名字有多个拼写,而是制作一个只有两列的表格。左列是备用拼写,右列是您想要的。
在你的例子" John Smith"有3种替代拼写。这将转化为三行,每行都有#34; John Smith"在右栏中。