实现此目的的公式或脚本?
Formula or script to achieve this?
我想要实现的是这样的:
- 检查 IF 单元格 A1 的值存在于数组.
- 如果存在则获取列的"Defult"值,如果不存在则"Not in the list"。
我尝试了 HLOOKUP 和 VLOOKUP,但一次仅限于单个行/列:(
您的问题与在此 link 中发现的一个线程非常相似:http://www.mrexcel.com/forum/excel-questions/673515-finding-value-multiple-column-array-returning-column-header-excel-2003-a.html
关于这个问题的具体版本,这里有一个可行的公式。注意B1
中的公式是数组公式,必须用CTRL+SHIFT+ENTER输入。
公式的思路是这样的:
- 遍历数组并查找与 A1 中单元格的匹配项。
- 如果有匹配项,则记录该匹配项的列(在数组中,因为这是一个数组公式)。这是使用
COLUMN
. 的逻辑
- 选中数组中的所有单元格后,使用
MAX
选择最大的列值 return。
- 现在有了正确的列,return 列 header 使用
INDEX
。
因为#3,如果有重复,你只会从最大的列中得到一个。
=INDEX($E:$G,MAX(IF($E:$G=A1,COLUMN($E:$G)-COLUMN($E)+1)))
(this is an array formula that must be entered with CTRL+SHIFT+ENTER)
该公式可以安全地复制到 B 列中。
相同的图像,但单元格已着色。
如果你想让这个公式在没有匹配的时候起作用,需要稍微修改它。你需要从INDEX
中拆分出数组公式称呼。问题是没有匹配项,MAX
returns 0。通常 INDEX
会拒绝 0,除了在数组公式中它显示为 return 第一个值。那样的话,就需要两个公式,第一个是数组公式,第二个是普通公式。
[B1, array formula] =MAX(IF($E:$G=A1,COLUMN($E:$G)-COLUMN($E)+1))
[C1, normal] =INDEX($E:$G,B1)
有了这些,您将 #VALUE!
搜索缺失。
我建议您对默认值使用不同的布局,以便于使用 VLOOKUP。与其为每个名字有多种拼写的人设置一栏,不如制作一个只有两栏的 table。左栏是备用拼写,右栏是您想要的。
在您的示例中 "John Smith" 有 3 个备选拼写。这将转换为三行,每行在右列中有 "John Smith"。
我想要实现的是这样的:
- 检查 IF 单元格 A1 的值存在于数组.
- 如果存在则获取列的"Defult"值,如果不存在则"Not in the list"。
我尝试了 HLOOKUP 和 VLOOKUP,但一次仅限于单个行/列:(
您的问题与在此 link 中发现的一个线程非常相似:http://www.mrexcel.com/forum/excel-questions/673515-finding-value-multiple-column-array-returning-column-header-excel-2003-a.html
关于这个问题的具体版本,这里有一个可行的公式。注意B1
中的公式是数组公式,必须用CTRL+SHIFT+ENTER输入。
公式的思路是这样的:
- 遍历数组并查找与 A1 中单元格的匹配项。
- 如果有匹配项,则记录该匹配项的列(在数组中,因为这是一个数组公式)。这是使用
COLUMN
. 的逻辑
- 选中数组中的所有单元格后,使用
MAX
选择最大的列值 return。 - 现在有了正确的列,return 列 header 使用
INDEX
。
因为#3,如果有重复,你只会从最大的列中得到一个。
=INDEX($E:$G,MAX(IF($E:$G=A1,COLUMN($E:$G)-COLUMN($E)+1)))
(this is an array formula that must be entered with CTRL+SHIFT+ENTER)
该公式可以安全地复制到 B 列中。
相同的图像,但单元格已着色。
如果你想让这个公式在没有匹配的时候起作用,需要稍微修改它。你需要从INDEX
中拆分出数组公式称呼。问题是没有匹配项,MAX
returns 0。通常 INDEX
会拒绝 0,除了在数组公式中它显示为 return 第一个值。那样的话,就需要两个公式,第一个是数组公式,第二个是普通公式。
[B1, array formula] =MAX(IF($E:$G=A1,COLUMN($E:$G)-COLUMN($E)+1))
[C1, normal] =INDEX($E:$G,B1)
有了这些,您将 #VALUE!
搜索缺失。
我建议您对默认值使用不同的布局,以便于使用 VLOOKUP。与其为每个名字有多种拼写的人设置一栏,不如制作一个只有两栏的 table。左栏是备用拼写,右栏是您想要的。
在您的示例中 "John Smith" 有 3 个备选拼写。这将转换为三行,每行在右列中有 "John Smith"。