系列 · Excel 函数学习与实战 第 5 篇 / 共 5 篇 教程

Excel 中级函数案例详解:动态数组、日期计算与批量处理

用三张真实 Excel 示例表讲解 REPLACE、FILTER、LET、BYROW、MAP、REDUCE 等 18 个中级函数,展示公式区域、动态结果和批量计算过程。

作者:黄撑 更新于 2026-07-17

前面的文章已经解决了函数分类、39 个基础函数、查找匹配和通配符。这一篇继续完成剩下的 18 个中级函数

中级函数并不是单纯把公式写得更长,而是开始解决三类问题:按日期周期计算、让结果自动扩展、把同一套规则批量应用到多行多列。

EXCEL INTERMEDIATE PRACTICE从单个公式,走向会自动扩展的整张表

全文使用三张独立示例表。每一组先看源数据和代表性计算过程,再查看 6 个函数的紧凑案例。

18中级函数
3函数分组
3示例工作表
4综合练习
01文本与日期编码替换、周数和周期
02动态数组筛选、去重、排序和转换
03批量计算逐行、逐列、逐项和累计

中级函数的阅读方法

Step 1 先看源数据形状

确认公式处理的是一个单元格、一列数据、整张表,还是一个行列矩阵。

Step 2 再看结果会不会扩展

动态数组只写一个公式,也可能返回多行多列结果。

Step 3 识别批量处理方向

BYROW 按行、BYCOL 按列、MAP 按元素、REDUCE 按顺序累计。

Step 4 最后再组合函数

先理解每个函数负责什么,再把筛选、排序、判断和错误处理串起来。

一、文本与日期:把固定格式转换成可统计字段

这一组函数适合处理编码、平台标记、周报日期和活动周期。先建立 编码日期表

工作表 01编码日期表用于文本替换、拼接和日期周期计算
ABCD
1商品编码上架日期平台店铺
2BOW-KB-0012026/7/1淘宝旗舰店
3BOW-MS-0022026/7/2京东数码店
4BOW-CS-0032026/7/5拼多多配件店
5BOW-KB-0042026/7/8淘宝键盘店
来源B2 = 2026/7/1同一个真实日期值
=WEEKDAY(B2,2)3星期三
=WEEKNUM(B2,2)27第 27 周
=DATEDIF(B2,DATE(2026,7,15),“d”)14相差 14 天
=EDATE(B2,3)2026/10/1三个月后
REPLACE按字符位置替换

把商品编码开头的 BOW 统一替换成 SKU

=REPLACE(A2,1,3,“SKU”)
结果
SKU-KB-001
关键点
从第 1 个字符开始,替换 3 个字符。
CONCAT直接拼接文本

把平台、店铺和商品编码拼成统一标记。

=CONCAT(C2,”-“,D2,”-“,A2)
结果
淘宝-旗舰店-BOW-KB-001
关键点
CONCAT 不会自动增加分隔符,需要在公式中自己写。
WEEKDAY返回星期序号

判断 B2 是一周中的第几天。

=WEEKDAY(B2,2)
结果
3
关键点
第二个参数写 2 时,星期一为 1,星期日为 7。
WEEKNUM返回年度周数

把上架日期转换成周报使用的周数。

=WEEKNUM(B2,2)
结果
27
关键点
参数 2 表示每周从星期一开始。
DATEDIF计算日期间隔

计算上架日期到 2026/7/15 相差多少天。

=DATEDIF(B2,DATE(2026,7,15),“d”)
结果
14
关键点
"d" 返回完整天数,也可以使用 "m""y"
EDATE按月份移动日期

计算上架日期三个月后的日期。

=EDATE(B2,3)
结果
2026/10/1
关键点
它按自然月份移动,比直接加 90 天更适合月度周期。

二、动态数组:一个公式返回多行多列

动态数组函数的关键变化是:公式通常只写在一个单元格里,结果会自动向下或向右扩展。下面建立 运营明细

工作表 02运营明细用于筛选、去重、排序、编号和行列转换
ABCD
1SKU平台状态销量
2KB001淘宝正常12
3MS002京东缺货5
4KB001拼多多正常8
5CS003淘宝异常15
6KB004京东正常6
7MS002淘宝异常9
源数据 A2:D76 行运营明细

第 5、7 行状态为“异常”。

筛选并排序=SORTBY(FILTER(A2:D7,C2:C7=“异常”),FILTER(D2:D7,C2:C7=“异常”),-1)

先筛出异常行,再按销量从大到小排列。

动态结果CS003 · 15MS002 · 9

源数据变化后,结果区域会重新扩展。

FILTER按条件返回记录

自动生成所有状态为异常的完整记录。

=FILTER(A2:D7,C2:C7=“异常”,“暂无异常”)
结果
返回第 5、7 行
关键点
返回的是多行多列,不只是记录数量。
UNIQUE自动去重

从 SKU 列生成不重复清单。

=UNIQUE(A2:A7)
结果
KB001、MS002、CS003、KB004
关键点
源数据增加新 SKU 后,去重结果自动扩展。
SORT按结果中的列排序

按第 4 列销量从大到小排列整张表。

=SORT(A2:D7,4,-1)
结果
15、12、9、8、6、5
关键点
4 表示按结果区域中的第 4 列排序。
SORTBY按指定区域排序

使用 D 列销量作为排序依据,移动整张记录。

=SORTBY(A2:D7,D2:D7,-1)
结果
销量从 15 排到 5
关键点
排序依据单独写,比记“第几列”更直观。
SEQUENCE生成连续序号

为 6 条记录生成从 1 开始的连续编号。

=SEQUENCE(6,1,1,1)
结果
1、2、3、4、5、6
关键点
四个参数依次是行数、列数、起始值和步长。
TRANSPOSE行列转换

把 A2:D3 的两行四列转换成四行两列。

=TRANSPOSE(A2:D3)
结果
4 行 × 2 列
关键点
新结果保持公式关联,不需要复制后再转置粘贴。

三、批量计算:把同一规则应用到整张矩阵

这一组函数解决的是“不要再向下复制几百行公式”。下面建立 七天销量,C~I 列分别代表星期一到星期日:

工作表 03七天销量列较多,移动端可横向查看
ABCDEFGHI
1SKU库存周一周二周三周四周五周六周日
2KB001302342531
3MS00280102101
4CS003153243242
5KB00450000000
按行BYROW

每个 SKU 的七天销量分别求和。

20 · 5 · 20 · 0
按列BYCOL

每天的全部 SKU 销量分别求和。

5 · 6 · 8 · 7 · 8 · 7 · 4
逐项MAP

把库存数字逐个转换成状态。

正常 · 预警 · 正常 · 预警
累计REDUCE

从初始值开始,把一行销量依次累加。

0 → 2 → 5 → 9 → 11 → 16 → 19 → 20
LET命名中间结果

先计算七天销量和日均销量,再返回保留一位小数的结果。

=LET(七天销量,SUM(C2:I2),日均,七天销量/7,ROUND(日均,1))
结果
2.9
关键点
给中间结果命名,避免在长公式里重复计算。
MAKEARRAY按行列规则生成数组

根据行号和列号生成一个 3 × 3 乘法表。

=MAKEARRAY(3,3,LAMBDA(r,c,r*c))
结果
1 2 3 / 2 4 6 / 3 6 9
关键点
rc 分别代表当前结果单元格的行号与列号。
BYROW逐行计算

分别计算每个 SKU 的七天总销量。

=BYROW(C2:I5,LAMBDA(row,SUM(row)))
结果
20、5、20、0
关键点
每一行执行一次 SUM,结果自动向下扩展。
BYCOL逐列计算

分别计算星期一到星期日的总销量。

=BYCOL(C2:I5,LAMBDA(col,SUM(col)))
结果
5、6、8、7、8、7、4
关键点
同一计算规则沿列方向执行,结果向右扩展。
MAP逐项批量处理

把库存低于 10 的商品批量标记为“预警”。

=MAP(B2:B5,LAMBDA(x,IF(x<10,“预警”,“正常”)))
结果
正常、预警、正常、预警
关键点
数组中的每个库存值都会单独进入同一套 IF 规则。
REDUCE逐项累计

从 0 开始,依次累加 KB001 的七天销量。

=REDUCE(0,C2:I2,LAMBDA(total,x,total+x))
结果
20
关键点
total 保存上一步结果,x 表示当前处理的数字。

四个综合练习

单个函数掌握后,再把不同函数家族组合起来。下面四个练习都能从本文三张示例表直接继续完成。

练习 01 · 周报字段生成“第 27 周-淘宝-BOW-KB-001”=CONCAT(“第”,WEEKNUM(B2,2),“周-”,C2,”-“,A2)

WEEKNUM 负责周数,CONCAT 负责组合成可用于报表的字段。

练习 02 · 异常清单筛出异常记录,并按销量从高到低排列=LET(异常,FILTER(A2:D7,C2:C7=“异常”),SORTBY(异常,INDEX(异常,,4),-1))

FILTER 生成结果,LET 命名结果,SORTBY 再按第 4 列排序。

练习 03 · SKU 销量状态批量判断每个 SKU 的七天销量是否为 0=BYROW(C2:I5,LAMBDA(row,IF(SUM(row)=0,“无销量”,“有销量”)))

BYROW 逐行处理,SUM 汇总,IF 把数字转换成状态。

练习 04 · 库存预警清单只返回库存低于 10 的 SKU 和库存=FILTER(A2:B5,B2:B5<10,“暂无预警”)

这里不需要先用 MAP 生成状态,FILTER 可以直接使用库存条件。

最后怎么判断自己是否学会

01看到“按周、按月或间隔天数”能想到 WEEKDAY、WEEKNUM、DATEDIF 和 EDATE。
02看到“自动生成一张新清单”能想到 FILTER、UNIQUE、SORT、SORTBY 和 SEQUENCE。
03看到“同一规则要计算很多行”能区分 BYROW、BYCOL 和 MAP 的处理方向。
04看到“长公式重复计算”能用 LET 命名区域或中间结果。
05看到“结果要逐步累计”能想到 REDUCE,而不是继续嵌套很多加法。
06看到“需要规则生成整片矩阵”知道 MAKEARRAY 使用行号和列号生成每个单元格。

继续阅读