Office_FILTER函数

Office这个 FILTER 函数的公式:


:1234: 公式如下:

=SUM(FILTER(F8:F1002, (ISNUMBER(A8:A1002))*(YEAR(A8:A1002)=2025)*(MONTH(A8:A1002)=6)*(B8:B1002<>"小计")))

:bullseye: 目标:

F8:F1002 中筛选出“日期在2025年6月,且B列不是‘小计’”的行,然后对这些 F 列的数值进行求和。


:brain: 拆解讲解:

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(...)

再把这些值加总起来。


:white_check_mark: 举个例子:

A列 B列 F列(目标值)
2025/6/1 正常行 100
2025/6/15 小计 200 ← 排除
2025/7/1 正常行 300 ← 排除
非日期 正常行 400 ← 排除
2025/6/5 正常行 150

那么最终求和结果就是:

100 + 150 = 250