实现这个的公式或脚本?

时间:2015-04-11 11:45:31

标签: excel formula

我想要实现的是:

  1. 检查数组中 A1 IF 值。。
  2. 如果存在,则获取“Defult”值,如果不存在,则“不在列表中”。
  3. 我尝试过HLOOKUP和VLOOKUP,但一次仅限于一行/列:(

    Look image at this link (i cant post images :/)

2 个答案:

答案 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输入。

公式的想法是:

  1. 遍历数组并查找A1中单元格的匹配。
  2. 如果匹配,请记录该匹配的列(在数组中,因为这是一个数组公式)。这是使用COLUMN
  3. 的逻辑
  4. 检查数组中的所有单元格后,选择使用MAX返回的最大列值。
  5. 现在使用正确的列,使用INDEX返回列标题。
  6. 由于#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列中安全地复制该公式。

    formula and layout

    与细胞着色的相同图像。

    formula and layout colored

    如果您希望此公式在不匹配时有效,则需要稍微修改。您需要从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"在右栏中。