OFFSET 是 Excel 经典易失性函数,作用是以指定基点单元格为原点,按照指定行数、列数偏移,返回一个单元格或者一片区域的引用,经常用来做动态数据源、动态图表、滚动汇总,这个函数最大特点是易失性,工作表任何单元格改动都会重新计算,数据量大的时候容易卡顿,很多人学习 OFFSET 容易搞混 5 个参数含义,尤其是高度宽度参数,理解成 “偏移到这个区域”,核心记忆点:基点不动,向下向右偏移,正数向下向右,负数向上向左。
函数语法
OFFSET(reference, rows, cols, [height], [width])
参数说明
- reference 基点引用:起始单元格 / 区域,偏移的原点
- rows 偏移行数:正数向下偏移,负数向上偏移,0 代表行不偏移
- cols 偏移列数:正数向右偏移,负数向左偏移,0 代表列不偏移
- height 可选:返回区域的高度(多少行),省略默认和基点高度一致
- width 可选:返回区域的宽度(多少列),省略默认和基点宽度一致
重点:rows、cols 是偏移量,不是目标单元格行号列号
基础案例演示
案例 1 单点偏移
基点是 A1,向下偏移 2 行,向右偏移 1 列
=OFFSET(A1,2,1)
结果就是 B3 单元格的值
案例 2 返回多行多列区域
基点 A1,向下偏移 1 行,向右偏移 0 列,高度 3 行,宽度 2 列
=OFFSET(A1,1,0,3,2)
返回 B2:C4 这个区域引用
典型实战用法
- 动态求和
- 动态图表数据源
- 滚动平均值
配合 SUM,动态选定区域求和
=SUM(OFFSET(A1,0,0,5,1))
对 A1:A5 求和,区域大小可以修改 height 参数实现动态区间
OFFSET 最经典用途,制作下拉切换动态图表,选择不同项目自动切换图表数据源
滚动窗口计算连续 N 期平均值,OFFSET 定义滚动区间,搭配 AVERAGE
✅ 易失性函数重点说明
OFFSET 属于易失函数,只要工作表任意单元格修改,OFFSET 就会自动重算
缺点:表格数据上万行大量使用 OFFSET,文件计算变慢、卡顿
现代 Excel 很多场景推荐替代方案:INDEX,INDEX 不是易失函数,性能更好
常见错误
错误 1 rows 填负数理解错误,负数是向上偏移,不是无效
错误 2 偏移之后超出表格边界,会返回 REF! 引用错误
错误 3 忘记 height、width 是区域尺寸,不是偏移距离
错误 4 大量嵌套 OFFSET,文件运行缓慢
学习掌握步骤
第一步 记住 5 个参数,区分基点、偏移行列、区域高宽
第二步 练习单点偏移,理解正负方向
第三步 练习带 height width,理解返回区域引用
第四步 实战 SUM+OFFSET 动态求和
第五步 了解易失性缺点,知道 INDEX 替代方案
【常见问题】
问题 1 offset 函数为什么表格大了就很卡
回答 1 offset 是易失性函数,工作表任何改动 offset 都会重新计算,大量 offset 公式会让 Excel 频繁重算,所以大数据表一般优先用 INDEX 替代 offset。
问题 2 offset 返回 REF! 是什么原因
回答 1 offset 偏移之后目标位置超出工作表边界,引用无效,就会出现 REF!,写 offset 公式要检查 rows 和 cols 偏移量是否过大。
问题 3 offset 和 index 有什么区别
回答 1 offset 是易失函数,可以动态生成可变区域,index 不是易失函数,性能更好,但是 index 不能像 offset 那样自由自定义区域高宽,动态区域场景 offset 更灵活。
问题 4 offset 的 height 和 width 可以省略吗
回答 1 offset 里面 height 和 width 是可选参数,可以省略,省略的时候返回区域大小和基点 reference 区域保持一致,只做单元格单点偏移的时候一般不需要写 height width。
【免责申明】
本文 offset 函数讲解基于 Excel 通用版本,WPS 表格 offset 函数语法基本一致,部分新版 Excel 动态数组版本表现略有差异,内容仅作为 Excel 学习参考。


