兰色在网上看到一位网友的求助:
如下图所示,要求根据选取的月份求1~n月份的和。
如:
选1月份只求1月份的和
选2月份求1~2月份的和
选5月求1~5月份的和
.........
对于这种动态区域求和,一般要借用offset函数。(但它并不是今天的主角,那个神奇的函数)
offset函数可以生成动态区域,它的语法为:
offset(单元格,行偏移数,列偏移数,总行数,总列数)
本题要求和的区域是:根据C2的月份数生成以D列为起始的N列区域。如C2是3月,那么求和的区域就是D:F列。
所以这儿只需要计算出总列数,其他参数可以省略(但要保留逗号)即:
offset(d3,,,,总列数)
所以接下来我们根据C3的值计算出总列数。99%的人都会想到用match函数,即:
=MATCH($C$2,D$2:O$2,0)
也许你还会想到用left函数截取,但很快就会否定这个函数,因为如果月份是1~9月可以用=left(月份,1)截取,但如果是10~12月份结果全是1了。
那....看来只能用match函数了......嘿嘿,该今天的主角上场了,它就是left的兄弟函数:LeftB
在Excel函数库中,最后带b的函数都是根据字节数计算的(1个汉字的字节数是2,数字和字母是1),如:
10月总字符数是3,但总字节数(lenb)是4
利用这个特点,我们用leftb(月份,2)就可以轻松提取月前的数字了。
今天问题的最简公式也出来了:
=SUM(OFFSET(D3,,,,LEFTB(C$2,2)))
兰色说:不得不说,今天的lleftb函数用的确实妙极了,以后遇到提取月份数字时,就可以用它简化你的公式了。
下周日,兰色将分享excel合同管理模板的制作方法,想学习的同学可以提前预约了,上课前会的震动提醒。
领取专属 10元无门槛券
私享最新 技术干货