Office这个 FILTER 函数的公式:
公式如下:
=SUM(FILTER(F8:F1002, (ISNUMBER(A8:A1002))*(YEAR(A8:A1002)=2025)*(MONTH(A8:A1002)=6)*(B8:B1002<>"小计")))
目标:
从 F8:F1002 中筛选出“日期在2025年6月,且B列不是‘小计’”的行,然后对这些 F 列的数值进行求和。
拆解讲解:
1. FILTER(array, include)
这是 Excel 的动态数组函数。
作用是:从 array 中筛选出满足 include 条件的值组成的新数组。
array是你想要的目标数据(这里是F8:F1002)。include是一个逻辑数组(例如:{TRUE; FALSE; TRUE; ...}),表示哪些行要保留。
2. ISNUMBER(A8:A1002)
判断 A 列每个单元格是不是“有效的数字” → 用来确认 A 列是日期格式(因为 Excel 的日期本质是数字)。
- 如果是空白或文本,就为
FALSE,这能避免YEAR()报错。
3. YEAR(A8:A1002)=2025
从 A 列提取出年份,检查是否等于 2025。
4. MONTH(A8:A1002)=6
从 A 列提取出月份,检查是否等于 6。
5. B8:B1002<>"小计"
判断 B 列的值是不是不等于“小计”。
6. 用 * 连乘多个条件
(ISNUMBER(...)) * (YEAR(...) = 2025) * (MONTH(...) = 6) * (B <> "小计")
- Excel 中的
TRUE= 1,FALSE= 0; - 所以多个条件用
*相乘,只有全部为TRUE的行结果才为 1(代表“保留”)。
7. FILTER(...) 得到的结果是:
比如筛选后只保留第 10、20、35 行,那么:
FILTER(F8:F1002, 条件)
就返回:
{F10; F20; F35}
8. SUM(...)
再把这些值加总起来。
举个例子:
| A列 | B列 | F列(目标值) |
|---|---|---|
| 2025/6/1 | 正常行 | 100 |
| 2025/6/15 | 小计 | 200 ← 排除 |
| 2025/7/1 | 正常行 | 300 ← 排除 |
| 非日期 | 正常行 | 400 ← 排除 |
| 2025/6/5 | 正常行 | 150 |
那么最终求和结果就是:
100 + 150 = 250