excel排序求和:如何统计前几名数据合计 下篇

上次咱们说到一个公式=SUM(LARGE(B:B,ROW(INDIRECT("1:"&H2)))),其中的ROW(INDIRECT("1:"&H2))这部分如果写成ROW(1:H2)就会报错:

原因也告诉大家了,就是ROW函数的参数只能使用单元格或单元格区域。

因此解决的办法就是如何使1:H2成为一个有效的单元格区域,要想实现这个目的,就需要用到INDIRECT函数,下面我们来介绍这个函数的用法。

INDIRECT的用法其实很简单,一句话就说完了:将表示地址的字符串作为INDIRECT函数的参数,可以直接得到该地址中的数据,表示地址的字符串必须置于引号内。

通过两个例子来说明这句话的含义:

例一、 在公式=INDIRECT("A1")中,A1可以表示一个单元格,加引号后作为INDIRECT的参数,效果与=A1是一样的。

例二、 在公式=SUM(INDIRECT("A1:A3"))中,INDIRECT("A1:A3")与A1:A3的意义相同,表示这个单元格区域。

以上两个例子中,地址都是固定不变的,也许大家会觉得用了INDIRECT有点多此一举,接下来再看一个区域不固定的例子。

使用公式=SUM(INDIRECT("A1:A"&B1))可以实现一个动态区域求和的效果:

注意到这个公式中,求和范围是从A1开始的,但是结束位置不确定,是通过B1单元格的数字来确定的。

"A1:A"&B1显然不能表示一个单元格区域,但是随着B1单元格中数据的变化,"A1:A"&B1就能表示“A1:A2”,“A1:A5”等等。

如果这个例子看明白的话,文章开头的问题就好理解了,"1:"&H2虽然不能表示一个单元格区域,但是INDIRECT("1:"&H2)却可以表示“1:3”,“1:5”等等。(两个数字中间加冒号可以表示第几行到第几行之间的单元格区域)

因此ROW(1:H2)是错误的,而ROW(INDIRECT("1:"&H2))就没问题了。

到这里,咱们上一次遗留的问题算是告一段落了。

可是细心的朋友也许会注意到,在使用INDIRECT函数的时候,参数有时候加引号,有时候没加引号,有时候还需要&这个连接符,这其中有什么讲究吗?

其实要用好这个函数,关键点的确是对引号的理解。

INDIRECT函数的参数如果不加引号,那么参数表示的单元格中必须是一个可以表示地址的内容。

例如,A10单元格中的内容为A1,公式=INDIRECT("A10")的结果等同于=A10,即返回数据“A1”;而=INDIRECT(A10)则等同于=A1,结果是A1单元格中的数据“8”。

这个例子需要自己多思考,理解加引号和不加引号的区别,这个坎才能过去。

至于什么时候用连接符&,也有一个判断标准,那就是为了构造出一个合法的地址,可能会用到常量(字母、数字和符号),也可能会用到变量(主要指单元格)。

例如在本文前面提到的例子中,表示单元格区域的地址“A1:A3”就用到了常量,其中有字母A,数字1和3,以及冒号。

如果要让这个地址的范围能够通过某个单元格的值来确定,就需要加入变量。

例如"A1:A"&B1,其中B1就是变量,这个单元格区域具体是什么,那就要看B1单元格中的数字了。

还有更加复杂的情况,让单元格区域的开始和结束位置都用变量来表示,例如"A"&B1&":A"&B2,在这个表示方法中,单元格开始位置由B1单元格中的数字来确定,结束位置由B2单元格中的数字来确定。

常量需要加引号,变量不加引号,常量和变量使用&进行连接。

因此要想用好INDIRECT函数,不仅仅需要非常牢固的基础知识,也需要对“地址”有非常清晰的认识才行,函数本身真的不是很难。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qingguo1979

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值