Excel - VLOOKUP与INDEX / MATCH - 哪个更好?

时间:2018-01-19 20:18:00

标签: excel indexing match vlookup

我了解如何使用每种方法:VLOOKUP(或HLOOKUP)与INDEX / MATCH

我正在寻找他们之间的差异而不是个人偏好,但主要是在以下方面:

  1. 是否有一种方法可以做到另一种方法无法做到?

  2. 哪一个更有效率(或者取决于具体情况)?

  3. 使用一种方法与其他方法相比的任何其他优点/缺点

  4. 注意:我在这里回答了我自己的问题,但是想看看是否有其他人有其他我没有想过的见解。

1 个答案:

答案 0 :(得分:12)

我更喜欢在几乎所有情况下都使用INDEX / MATCH,因为它更灵活,并且根据查找表的大小,可能更有效率。

我唯一可以证明使用VLOOKUP的理由是非常直接的表,其中列索引号是动态的,尽管即使在这种情况下,INDEX / MATCH也是同样可行。

我将在下面举几个具体的例子来说明这两种方法之间的详细差异。

INDEX / MATCH可以向左查找 (或您想要的任何其他地方)

这可能是INDEX / MATCH最明显的优势,也是VLOOKUP最大的挫折之一。 VLOOKUP只能向右查找,INDEX / MATCH可以在任何范围内查找,包括必要的不同表格。

使用VLOOKUP无法完成以下示例。

enter image description here

INDEX / MATCH有可能使用更小的细胞范围(从而提高效率)

考虑以下示例。它可以用任何一种方法完成。

enter image description here

enter image description here

这两个公式都很好。但是,由于VLOOKUP公式包含的范围大于INDEX / MATCH公式,因此不必要地存在波动。

如果B1:G4范围内的任何单元格发生更改,则VLOOKUP公式必须重新计算(因为B1:G4A1:H4范围内),即使更改B1:G4中的任何单元格也是如此1}}不会影响公式的结果。这不是INDEX / MATCH的问题,因为其公式不包含范围B1:G4

使用固定col_index_number的VLOOKUP是危险的

我看到具有固定列索引号的主要问题是,如果插入完整列,它将不会更新。请考虑以下示例:

enter image description here

除非在查找表中插入列,否则此公式可以正常工作。在这种情况下,公式将查找应该在哪里的值的左侧。插入列后见下面的结果。

enter image description here

通过使用以下VLOOKUP公式,实际上可以减轻这种情况:

= VLOOKUP("s",A1:H4,COLUMN(H1)-COLUMN(A1)+1,FALSE)

如果插入了列,H1将自动更新为I1,从而保留对同一列的引用。但是,这完全没必要,因为INDEX / MATCH可以通过以下公式解决此问题。

= INDEX(H1:H4,MATCH("s",A1:A4,0))

我意识到这是一个不太可能的情况,但是我总是困扰我VLOOKUP默认根据固定的列索引查找,如果插入了列则不会自动更新。对我而言,它似乎使VLOOKUP功能更加脆弱。

INDEX / MATCH也可以处理变量列索引,但更长的公式

如果列索引号本身是动态的,那么当我认为VLOOKUP简化了一些事情时,这是唯一的情况,但INDEX / MATCH替代方案同样如此,稍微有点混乱。见下面的例子。

enter image description here

enter image description here

INDEX / MATCH对多次查找更有效

(感谢@jeffreyweir)

如果单个匹配值需要多个查找值,则使用具有匹配值的辅助单元格会更有效。这样,匹配只需要计算一次,而不是每个查找公式计算一次。见下面的例子。

enter image description here

然后可以使用此匹配值返回适当的查找值。见下面的例子,(公式已被拖到右边)。

enter image description here

本手册"分裂"匹配值和索引值不是VLOOKUP的选项,因为匹配值是"内部" VLOOKUP中的变量,无法访问。

INDEX / MATCH可以查找范围,允许其他操作

例如,假设您想根据列名在列中找到最大值。

您可以先使用MATCH查找相应的列,然后INDEX返回整个列的范围,然后使用MAX查找该范围的最大值。

请参阅下面的示例,H4中的公式查找单元格G4中指定的列名称的最大值。仅使用VLOOKUP无法完成此操作。

enter image description here

摘要

VLOOKUP充其量只能与INDEX / MATCH一样好,并且在某些情况下可能稍微有点混乱。在最坏的情况下,VLOOKUPINDEX / MATCH更不安全和易变。

另外值得注意的是,如果您想查找范围而不是单个值,则必须使用INDEX / MATCHVLOOKUP不能用于查找范围。

出于这些原因,我几乎在所有情况下都更喜欢INDEX / MATCH