分享

如何使用Excel中的INDEX和MATCH函数命令实现多个条件匹配情况下数据提取

 昵称2844865 2011-08-16
如何使用Excel中的INDEX和MATCH函数命令实现多个条件匹配情况下数据提取
下面的示例使用 INDEX 和 MATCH 工作表功能来根据多个条件查找值。
示例 1:列中的数据

方法 1

  1. 启动 Excel。
  2. 在新的工作表中键入以下数据:
    A1:部件 B1:代码 C1:价格 D1:查找部件 E1:查找代码
        A2:x B2:11 C2:5.00 D2:y  E2:  12
        A3:x B3:12 C3:6.00 D3:y  E3:  11
        A4:y B4:11 C4:7.00 D4:x  E4:  12
        A5:y B5:12 C5:8.00 D5:x  E5:  11
  3. 要检索代码为 12 的部件 y 的价格并将检索到的值返回到单元格 F2,请在单元格 F2 中键入以下公式:
    =INDEX($C$2:$C$5,MATCH(D2,IF($B$2:$B$5=E2,$A$2:$A$5),0))
  4. 按 Ctrl+Shift+Enter 将公式输入为数组公式。

    该公式返回的值为 8.00。
  5. 选择单元格 F2,抓住填充柄,然后向下填充至单元格 F5,以检索每个部件和代码组合的价格。

方法 2

第二种方法可以得到相同的结果,只不过使用的是串联方法。如果要按照两个以上的条件来匹配数据,则使用下面的示例公式可能更适合,因为它不需要使用嵌套的 IF 语句。此方法与方法 1 相同,只是需要将步骤 3 中的公式替换为以下公式:
=INDEX($C$2:$C$5,MATCH(D2&E2,$A$2:$A$5&$B$2:$B$5,0))

 

示例 2:按行排列的数据

方法 1

  1. 启动 Excel。
  2. 在新的工作表中键入以下数据:
    A1:部件  B1:x      C1:x     D1:y       E1:y
        A2:代码  B2:11     C2:12    D2:11      E2: 12
        A3:价格  B3:5.00   C3:6.00  D3:7.00    E3: 8.00
        A4:查找部件 B4:y      C4:y     D4:x       E4:x
        A5:查找代码 B5:12     C5:11    D5:12      E5: 11
  3. 要检索代码为 12 的部件 y 的价格并将检索到的值返回到单元格 B6,请在单元格 B6 中键入以下公式:
    =INDEX($B$3:$E$3,MATCH(B4,IF($B$2:$E$2=B5,$B$1:$E$1),0))
  4. 按 Ctrl+Shift+Enter 将公式输入为数组公式。

    该公式返回的值为 8.00。
  5. 选择单元格 B6,抓住填充柄,然后向下填充至单元格 E6,以检索每个部件和代码组合的价格。

方法 2

第二种方法可以得到相同的结果,只不过使用的是串联方法。如果要按照两个以上的条件来匹配数据,则使用下面的示例公式可能更适合,因为它不需要使用嵌套的 IF 语句。此方法与方法 1(在示例 2 下)相同,只是需要将步骤 3 中的公式替换为以下公式:

=INDEX($B$3:$E$3,MATCH(B4&B5,$B$1:$E$1&$B$2:$E$2,0))

补充知识

返回在指定方式下与指定数值匹配的数组中元素的相应位置。如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用 MATCH 函数而不是 LOOKUP 函数。

语法

MATCH(lookup_value,lookup_array,match_type)

Lookup_value 为需要在数据表中查找的数值。

Lookup_value 为需要在 Look_array 中查找的数值。例如,如果要在电话簿中查找某人的电话号码,则应该将姓名作为查找值,但实际上需要的是电话号码。

Lookup_value 可以为数值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。

Lookup_array 可能包含所要查找的数值的连续单元格区域。Lookup_array 应为数组或数组引用。

Match_type 为数字 -1、0 或 1。Match-type 指明 Microsoft Excel 如何在 lookup_array 中查找 lookup_value。

如果 match_type 为 1,函数 MATCH 查找小于或等于 lookup_value 的最大数值。Lookup_array 必须按升序排列:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE。

如果 match_type 为 0,函数 MATCH 查找等于 lookup_value 的第一个数值。Lookup_array 可以按任何顺序排列。

如果 match_type 为 -1,函数 MATCH 查找大于或等于 lookup_value 的最小数值。Lookup_array 必须按降序排列:TRUE、FALSE、Z-A、...、2、1、0、-1、-2、...,等等。

如果省略 match_type,则假设为 1。

说明

函数 MATCH 返回 lookup_array 中目标值的位置,而不是数值本身。例如,MATCH("b",{"a","b","c"},0) 返回 2,即“b”在数组 {"a","b","c"} 中的相应位置。
查找文本值时,函数 MATCH 不区分大小写字母。
如果函数 MATCH 查找不成功,则返回错误值 #N/A。
如果 match_type 为 0 且 lookup_value 为文本,lookup_value 可以包含通配符、星号 (*) 和问号 (?)。星号可以匹配任何字符序列;问号可以匹配单个字符。
示例

如果您将示例复制到空白工作表中,可能会更易于理解该示例。

操作方法

创建空白工作簿或工作表。
请在“帮助”主题中选取示例。不要选取行或列标题。


从帮助中选取示例。

按 Ctrl+C。
在工作表中,选中单元格 A1,再按 Ctrl+V。
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。

1
2
3
4
5
A B
Product Count
Bananas 25
Oranges 38
Apples 40
Pears 41
公式 说明(结果)
=MATCH(39,B2:B5,1) 由于此处无正确的匹配,所以返回数据区域 B2:B5 中最接近的下一个值 (38) 的位置。(2)
=MATCH(41,B2:B5,0) 数据区域 B2:B5 中 41 的位置。(4)
=MATCH(40,B2:B5,-1) 由于数据区域 B2:B5 不是按降序排列,所以返回错误值。(#N/A)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多