前一篇文章里面介绍了offset函数的使用,并且在文章末尾举了一个使用offset加上其它组合函数来实现动态统计的效果,但是没有对其进行具体的介绍。本文再续“前缘”,对上文提到的组合函数来做详细的解释。
先看前一篇文章中实现动态统计的数据和函数:
样例数据
动态统计函数组成下面是提取出来的文本形式的函数:
从里到外,依次用到了COUNTA、ADDRESS、INDIRECT、OFFSET、SUM这5个函数。其中,SUM和COUNTA函数应该不用多做解释,大多数人都懂。所以本系列主要讲ADDRESS、INDIRECT、OFFSET函数。本篇作为系列文章的第2篇,主要讲公式1-ADDRESS函数。
先看ADDRESS函数的描述和签名
address 函数描述
address 函数签名描述中已经讲得很清楚,ADDRESS函数根据给定的行号和列标,返回一个文本类型的单元格地址。所谓单元格地址就是A1、B4、$A$4、$A4、A$4这样的(共4种)。
再看签名,这个函数要求的必填参数只有2个,一个是行序数,一个是列序数。说白了就是第几行第几列。我们知道,B3单元格是第3行第2列,所以理论上ADDRESS(3,2)应该会返回B3。先来看看效果:
address(3, 2) 结果没有错误!虽然这里返回的是$B$3,但它只是一个绝对引用的格式,引用的还是B3单元格。这里如果看不懂的话,可以看回我以前的文章
再看一下函数签名:
address 函数签名函数的第3个参数是“引用类型”,这个参数就是用来控制返回的是绝对引用还是相对引用了。也就是返回的到底是B3还是$B$3,共有4种,如下表:

所以想要返回B3,那就写上4就可以:
address(3, 2, 4) 结果函数的第4个参数是引用样式,这里不做解释,因为它的使用场景很有限,一般用不着。第5个参数是工作表名称,也很好理解,如果忽略不写,那就是当前工作表,如果要引用其它工作表就把那个工作表名称写上就行。所以前文使用到的公式1:
=ADDRESS(COUNTA(C:C),3,4,TRUE)
第1个参数我使用了COUNTA(C:C)来代替,因为C列没有空行,把COUNTA(C:C)就能得到总记录数。表示当共有20行时,COUNTA(C:C)的值为20;当共有21行时,COUNTA(C:C)的值为21,即始终取最后一行的行数。这里是公式的关键点。
第2个参数是3,表示取第3列,即“销量”数据所在列,即C列。
第3个参数是4,表示使用相对引用,这里关系不大。
第4个参数是TRUE,表示使用“A1”这种样式
第5个参数省略了,表示引用的是当前工作表。
返回结果是C23,如下:
address(counta(c:c), 3, 4, true))ADDRESS函数讲到这里,下一篇文章展开说明INDIRECT函数的作用与使用方法。