本文主要是练习index、match的使用。
INDEX(array, row_num, [column_num])函数介绍
它可以返回表格或数组中的某个特定单元格的值。这个函数特别适用于需要从数据集中检索特定位置数据的情况。
- array:这个参数是你希望从中获取数据的整个数组或范围。这可以是工作表上的一个区域,也可以是某个数组常量。
- row_num:这是你想要返回的值所在的行号。如果array参数包含了多个行,则需要通过row_num来指定是哪一行的数据。
- column_num:这是你想要返回的值所在的列号。如果array参数包含了多列,则需要通过column_num来指定是哪一列的数据。如果array只包含一列,则不需要这个参数。
MATCH(lookup_value, lookup_array, [match_type])函数介绍
MATCH函数用于在一行或一列的数组中搜索指定的项,然后返回该项在此数组中的相对位置。它不像LOOKUP函数那样返回值,而是返回匹配项的位置。
- lookup_value:可以是文本、数字或逻辑值,也可以是这些类型的单元格引用。
- lookup_array:可以是单行或单列的范围,或者是数组常量。
- match_type:决定函数如何匹配lookup_value与lookup_array中的元素。如果lookup_value是文本,它最多可以包含255个字符。
- 如果为1,函数会在lookup_array中查找小于或等于lookup_value的最大值。Lookup_array中的值必须按升序排列。
- 如果为0,函数会在lookup_array中查找等于lookup_value的第一个值。Lookup_array可以无序。
- 如果为-1,函数会在lookup_array中查找大于或等于lookup_value的最小值。Lookup_array中的值必须按降序排列。
- 如果省略match_type,默认值为1。
案例练习
假设excel数据表有A、B、C三列,现在需要根据A匹配查询,返回对应的B或C列的数据,B、C同一行不会同时都有数据。
以下是仅使用INDEX+MATCH的极简公式:
=INDEX(B:B,MATCH(D2,A:A,0))&INDEX(C:C,MATCH(D2,A:A,0))
原理说明:
- 文本连接特性:& 符号会自动忽略空单元格
- 当B列有数据时:B值 & 空 = B值
- 当C列有数据时:空 & C值 = C值
适用场景:
- 数据为文本类型
- 需要兼容所有Excel版本
- 接受空值显示为0时可用+代替&:
=INDEX(B:B,MATCH(D2,A:A,0))+INDEX(C:C,MATCH(D2,A:A,0))
示例演示:
A列(水果) | B列(库存) | C列(销量) |
苹果 | 100 | |
香蕉 | 200 |
当查询苹果时: INDEX(B列找到100) & INDEX(C列找到空) → 100 当查询香蕉时: INDEX(B列找到空) & INDEX(C列找到200) → 200