【问题标题】:Vlookup array functionVlookup 数组函数
【发布时间】:2014-04-08 16:55:47
【问题描述】:

我正在尝试这样的事情:

{=VLOOKUP(A13:D13,[data.xls]Sheet1!$A$162:$H$215,8,FALSE)}

如何查找一组值 (A11:D13) 以在表/数组中寻找完全匹配的数组?

所以它需要按顺序匹配 A13、B13、C13、D13,并且需要在表查找中完全匹配才能返回值。

感谢您的帮助。

【问题讨论】:

  • 你能在每张纸上加一个“帮助栏”吗??
  • 是的。两张表都是可编辑的

标签: arrays excel vlookup


【解决方案1】:

试试这个数组公式(Ctrl+Shift+Enter):

=INDEX([data.xls]Sheet1!$H$162:$H$215,MATCH(1,1*ISNUMBER(MATCH([data.xls]Sheet1!$A$162:$A$215,A13:D13,0)),0))

从最里面开始:

MATCH($A$162:$A$215,A13:D13,0) 从表中获取您要查找的值中存在的值(一种反向查找)。

这些通过1*ISNUMBER() 转换为01,然后MATCH(1, ... ,0) 获取第一个1 的行号。

INDEX 只是使用它来返回相应的值。

注意:这将获取首先出现在A13:D13 范围内的值,这意味着它不会首先在列中查找A13,但如果它匹配任何一个,它将查看表中的第一个单元格A13:D13.


如果您想先检查 A13:

=VLOOKUP(INDEX(A13:D13,MATCH(1,1*ISNUMBER(MATCH(A13:D13,[data.xls]Sheet1!$A$162:$A$215,0)),0)),[data.xls]Sheet1!$A$162:$H$215,2,0)

它的工作原理类似,但现在使用 INDEX 获取 A13:D13 中的什么值首先出现在表数组中,然后将其用于 vlookup。

【讨论】:

    【解决方案2】:

    由于两张表格都是可编辑的,而不是让事情变得更复杂,我会在两张表格中添加一个“帮助列”。

    因此,例如,在第一张工作表的 A 列之前添加一列并将公式放入(这里,假设您正在为第 2 行这样做,但显然根据需要更改行号):

    = A2 & "|" & B2 & "|" & C2 & "|" & D2
    

    对您的其他工作表执行相同操作,这样您就有了要匹配的内容,现在您有了一个可以用于常规 VLOOKUP() 函数的单元格值。

    希望这是有道理的!

    【讨论】:

      【解决方案3】:

      您可以试试这个公式,如果您在 A162:A215 的 4 个连续行中找到 4 个 A13:D13 值,它只会返回匹配项

      =INDEX($H$162:$H$212;SUMPRODUCT(MATCH(A13&B13&C13&D13;$A$162:$A$212&$A$163:$A$213&$A$164:$A$214&$A$165:$A$215;0)))
      

      根据您的区域设置,您可能需要替换 arg 分隔符“;”由“,”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多