Excel 公式offset - Learning_logs
原文来自于ExcelHome微信公众号2020-09-03分享内容,仅做收集记录使用。
1、函数作用:
用于生成数据区域的引用,再将这个引用作为半成品,作为动态图表的数据源、或是作为其他函数的参数,进行二次加工。
2、函数用法:
=OFFSET(基点,偏移的行数,偏移的列数,[新引用的行数],[新引用的列数])
第二参数使用正数时,表示从基地向下偏移,负数表示向上偏移。
第三参数使用正数时,表示向右偏移,使用负数时表示向左偏移。
第四和第五参数是可选的,如果省略这两个参数,新引用的区域就是和基点一样的大小。
咱们用下面这个公式,来理解一下OFFSET函数的计算过程:
=OFFSET(C3,4,2,4,3)
以C3为基点,向下偏移4行,向右偏移2列,新引用的行数是4行,新引用的列数是3列,最终得到对E7:G10单元格区域的引用。
3、常用姿势解锁:
1)行列转置
如下图,要将A2:D7单元格中多行多列的姓名,转换到一列中。
F2单元格公式为:
=OFFSET($A$2,(ROW(A1)-1)/4,MOD(ROW(A1)-1,4))&””
2)计算指定区间的销售额
如下图所示,要计算从1月份到指定月份的累计销售额。
F4单元格公式为:
=SUM(OFFSET(B2,0,0,MATCH(F2,A2:A13,0)))
4)计算筛选后的商品总价
如下图,是各食堂的采购记录,需要计算筛选后的商品总价。
G1单元格公式为:
=SUMPRODUCT(SUBTOTAL(3,OFFSET(A1,ROW(1:9),0))*C2:C10*D2:D10)
要计算筛选后的内容,首先需要判断单元格是不是处于显示状态。
先来看OFFSET(A1,ROW(1:9),0)部分,OFFSET函数以A1单元格为基点,向下偏移的行数是ROW(1:9)的计算结果,表示依次向下偏移1~9行,最终得到9个引用区域,每个单元格区域由一个单元格构成。
这里涉及到多维引用的知识点了,小伙伴们如果犯迷糊,可以先收藏一下。
接下来使用SUBTOTAL函数对OFFSET函数得到的多个引用区域进行处理,第一参数使用3,表示使用COUNTA函数的计算规则,即依次统计A2~A9这九个单元格区域中的不为空的单元格个数。
如果单元格处于显示状态,则对这个单元格的统计结果为1,否则统计结果为0。
这部分公式得到类似下面的效果:
{0;0;0;0;0;1;1;1;1}
再用SUBTOTAL函数的结果乘以C列的单价和D列的数量,如果单元格处于显示状态,则相当于1*数量*单价,否则相当于0*数量*单价。
最后使用SUMPRODUCT函数对乘积进行求和,这样就得到筛选后的商品总价了。