问题案例
有如下两个工作表(Sheet1和Sheet2):
在sheet1中的C2行获得一个结果(项目1的1月收入),是对sheet2中的A列筛选出"项目1"
+B列筛选出"202401"
而获得对应C列的结果。借助excel的公式如何实现。
Sheet1 - 总览表
项目 | 收入 | 1月收入 | 2月收入 |
---|---|---|---|
项目1 | |||
项目2 |
Sheet2 - 详细收入记录
项目 | 年月 | 收入 |
---|---|---|
项目1 | 202401 | 100 |
项目1 | 202402 | 130 |
项目2 | 202401 | 200 |
项目2 | 202402 | 230 |
目标:在Sheet1中根据项目名称和月份获取对应的收入数据。
解决方法
方法一:使用 INDEX
和 MATCH
函数组合
在Sheet1的C2单元格中,我们可以使用数组公式来匹配项目1在202401月份的收入:
excel
=INDEX(Sheet2!C:C, MATCH(1, (Sheet2!A:A="项目1")*(Sheet2!B:B=202401), 0))
输入上述公式后,使用Ctrl
+ Shift
+ Enter
来确认,Excel会处理它作为一个数组公式。
方法二:使用 SUMIFS
函数
在Sheet1的C2单元格中,可以使用SUMIFS
函数来实现相同的目标,而无需输入数组公式:
excel
=SUMIFS(Sheet2!C:C, Sheet2!A:A, "项目1", Sheet2!B:B, 202401)
这个公式会返回所有满足条件(项目为"项目1"且年月为"202401")的收入值的总和。
知识点拓展
INDEX
函数
INDEX
函数返回表格中指定单元格的值,或者某个区域中的某个单元格的值。它的基本语法是:
excel
=INDEX(数组, 行号, 列号)
MATCH
函数
MATCH
函数搜索指定项在数组中的位置。它的基本语法是:
excel
=MATCH(查找值, 查找数组, 匹配类型)
SUMIFS
函数
SUMIFS
函数可以根据一个或多个条件对范围的值求和。它的基本语法是:
excel
=SUMIFS(求和范围, 条件范围1, 条件1, 条件范围2, 条件2, ...)
动态数组
在最新版本的Excel中,不需要使用Ctrl
+ Shift
+ Enter
来创建数组公式,因为它支持动态数组。只需输入公式并按Enter
即可。
注意事项
- 确保在使用公式时正确引用了工作表名和单元格范围。
- 在使用
MATCH
函数时,如果数组中没有找到查找值,将返回错误。 SUMIFS
函数在有多条相同条件的记录时能返回正确的总和,这适用于求和而非单一值的匹配。