问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Excel多条件查找:INDEX/MATCH与FILTER函数详解

创作时间:
作者:
@小白创作中心

Excel多条件查找:INDEX/MATCH与FILTER函数详解

引用
1
来源
1.
https://www.contextures.com/excellookupmultiplecriteriaindexmatch.html

在Excel中进行多条件查找时,INDEX/MATCH函数和FILTER函数是两种非常有效的解决方案。本文将详细介绍这两种方法的工作原理,并通过实际示例帮助读者掌握它们的使用技巧。

Excel多条件查找方法

在Excel中基于两个条件进行查找有多种方法。本页将展示如何使用以下两种方法进行双条件查找:

  1. INDEX/MATCH函数(适用于所有版本的Excel)
  2. FILTER函数(适用于具有动态数组功能的Excel版本,如Excel 365)

接下来的部分将帮助你选择最适合的解决方案,并通过两个简短视频演示每种方法的工作原理。选择解决方案后,下面将详细介绍如何设置FILTER函数或Excel的INDEX和MATCH函数。

应该使用FILTER还是INDEX/MATCH?

为了帮助你决定在Microsoft Excel中使用哪种多条件查找解决方案,以下是它们之间的关键差异:

INDEX/MATCH函数

  • 这两个函数在所有版本的Excel中都可用
  • 如果满足条件的结果有多个,则返回范围中的第一个结果
  • 多条件公式必须以数组形式输入,除非Excel版本支持动态数组

FILTER函数

  • 该函数仅在你的Excel版本支持动态数组(如Excel 365)时可用。确保需要使用工作簿的其他人也具有动态数组功能
  • 如果满足条件的结果有多个,则结果将向下溢出到下面的行,以显示所有项目
  • 不需要以数组形式输入

其他解决方案

此外,还有其他方法可以使用Microsoft Excel进行多条件查找。请查看以下页面上的示例,包括Excel LOOKUP和VLOOKUP函数示例:



此外,还可以查看有关Excel不同查找函数的更多信息。

视频教程:Excel双条件查找

为了帮助你入门,下面是两个视频,展示了每种查找选项的工作原理。视频下方有详细的书面步骤:

1) Excel多条件查找:演示了INDEX和MATCH函数如何一起工作,基于一个条件。接下来,公式将更改为基于两个条件。要跟随视频,请下载示例文件。

2) 开始使用Excel FILTER函数:演示了FILTER函数如何工作,基于一个条件。在6:00标记处的第三个示例显示了带有两个条件的FILTER函数。要跟随视频,请下载示例文件。

由于技术限制,此处无法直接观看视频,请点击链接查看。

INDEX和MATCH

要使用多个条件进行Excel查找,可以使用INDEX和MATCH函数。

  • INDEX函数可以从列表或数据范围中的特定位置返回值
  • MATCH函数可以在列表中查找项目的的位置

当INDEX和MATCH一起使用时,它们创建了一个灵活且强大的查找公式。

简单的INDEX和MATCH

在使用INDEX和MATCH进行多条件查找之前,让我们看看它们如何在简单公式中一起工作。

在下面的公式中,我们需要在价格列表的B列中找到“Sweater”,并从同一工作表的C列中获取其价格。

  • 项目条件已输入单元格A7 - Sweater
  • 此INDEX和MATCH公式已输入单元格C7,用于获取该项目的价格:

=INDEX($C$2:$C$4,MATCH(A7,$B$2:$B$4,0))

该公式正确返回了毛衣的价格 - 10

简单INDEX MATCH公式的工作原理

让我们看看这个简单的INDEX / MATCH公式如何找到毛衣的正确价格。

  1. 首先,MATCH函数在B2:B4单元格中查找"Sweater"的位置,并返回该数字
  2. 然后,INDEX函数从C2:C4单元格中返回该行的价格

因此,通过结合使用INDEX和MATCH,你可以找到项目的行位置,并返回该行的价格。

这里是函数的详细信息:

  1. MATCH

MATCH函数有3个参数:

  • lookup_value:要在查找数组中查找的值是什么?
  • lookup_array:查找数组在哪里?
  • [match_type]:(可选)MATCH应该查找精确匹配(0)还是近似匹配(1或-1)?

在这个例子中,MATCH函数在B2:B4范围内查找A7单元格中的值,使用精确匹配类型。

  • 结果是1,因为"Sweater"在该范围的第一行。
  1. INDEX

INDEX函数有3个参数:

  • array:数组在哪里?
  • row_num:哪个行包含要返回的值?
  • [column_num]:(可选)哪个列包含要返回的值?

在这个例子中,INDEX函数返回10 - C2:C4范围内第一行的价格。

INDEX/MATCH双条件查找

在上一个示例中,匹配基于一个条件 - 项目名称。对于下一个条件查找,有两个条件 - 项目和大小。

在这个定价查找表中,每个项目列出3次 - 每个大小一次。我们想要查找特定产品和大小的价格。

  • 项目:Jacket - 输入单元格C13
  • 大小:Large - 输入单元格D13

大号夹克的价格是40,如果在单元格E13中输入INDEX/MATCH公式,应该得到这个结果。

注意:A列中的数字仅用于参考 - 它们在公式中不使用。

INDEX/MATCH双条件公式

要基于两个条件计算价格,请在单元格E13中输入以下数组输入的INDEX和MATCH公式。该公式将在下面解释。

注意:在具有溢出函数的Excel 365中,只需按Enter键。不需要数组函数。

  • =INDEX(E2:E10,
    MATCH(1,
    (C13=$C$2:$C$10) * (D13=$D$2:$D$10),0))

数组输入 - 按*Ctrl + Shift + Enter,而不是仅按Enter键。这将自动在数组公式周围添加花括号。

双条件公式的工作原理

让我们看看这个INDEX MATCH多条件公式如何工作。

INDEX函数

产品价格在单元格E2:E10中,INDEX将从该范围内返回一个价格。

  • =INDEX(E2:E10,

MATCH函数 - 查找行

MATCH函数告诉INDEX使用该范围中的哪个行号。

注意:这个数字可能与工作表行号不同。

  1. 在MATCH函数中,第一个参数,lookup_value,是1
  • MATCH(1,

2a) 对于第二个参数,lookup_array,有两个测试:

  • 第一个条件:在项目列中是否有Jacket - TRUE(1)或FALSE(0)
  • 第二个条件:在大小列中是否有Large - TRUE或FALSE

2b) 接下来,将这些TRUE FALSE值相乘,返回零和一

2c) 在这个例子中,只有第8个产品同时满足两个条件,夹克和大号,并返回1

  • 如果在公式栏中评估lookup_array参数,数组的第8个位置将有一个1。
  1. MATCH函数的第三个参数,match_type,是零,以返回精确匹配。

INDEX/MATCH结果

因此,MATCH函数的结果是8,因为它在lookup_array的第8个位置找到了lookup value的精确匹配。

基于这个结果,INDEX返回价格查找表中第8个产品的价格。

FILTER函数

如果你的Excel版本支持动态数组(Office 365),你可以使用新的FILTER函数返回所需的结果。FILTER函数允许你基于条件从范围内返回结果。

在这个例子中,有一个名为tblProducts的命名表,包含4列 - Code、Item、Size和Price。

条件单元格

在工作表顶部,输入了两个条件,用于产品规格

  • 单元格A2 - 产品的项目名称:Jacket
  • 单元格B2 - 产品的大小:Large

基于这些条件,我们需要两个结果 - 产品的价格和产品的字母数字代码。

使用FILTER函数获取产品价格

首先,在单元格C2中,我们将输入一个动态数组FILTER公式,基于A2和B2单元格中的条件计算产品价格。

FILTER函数有3个参数:

  1. array
  2. include
  3. if_empty(可选)

1) array参数

产品价格存储在以下范围中:

  • 在名为tblProduct的表中
  • 在名为Price的列中。

因此,从公式开始,

  • 输入等号:=
  • 输入函数名称,FILTER
  • 输入左括号 - (
  • 在工作表上,单击价格列标题单元格
    Excel将自动输入对价格列的引用,使用结构化表引用。

公式应该如下所示:

  • =FILTER(tblProducts[Price],

2) include参数

对于include参数,公式必须检查Item列,看是否与单元格A2匹配

  • (tblProducts[Item]=A2)

AND公式必须检查Size列,看是否与单元格B2匹配

  • (tblProducts[Size]=B2)

两个条件都在include参数中,用乘法运算符(*星号)分隔

=FILTER(tblProducts[Price], (tblProducts[Item]=A2) * (tblProducts[Size]=B2))

使用FILTER获取产品代码

返回产品代码的FILTER公式几乎相同,但对于array参数,我们需要从Code列中获取结果:

=FILTER(tblProducts[Code], (tblProducts[Item]=A2) * (tblProducts[Size]=B2))

下载Excel文件 ✅

  • INDEX/MATCH:要跟随INDEX/MATCH视频,请下载压缩的Lookup with Multiple Criteria示例文件。工作簿是xlsx格式,不包含任何宏。
  • FILTER函数示例:要查看四个FILTER示例,请下载FILTER function sample workbook。文件是压缩的,格式为Excel xlsx,没有宏。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号