Excel学无止境 - offset,match,indirect,address Unknown 2014/05/04

| |

Excel真是学无止境。我一直觉得自己的Excel水平还可以,想不到用的时候发现自己还是不行。

最近在折腾一个事情,想某段长度列的总和。

本想用sumifs的,结果sumifs不能处理复杂的多条件求和。结果转而使用sumproduct。sumproduct真是牛啊,真是多条件求和。

结果,sumproduct不能用于整列(sumifs可以),必须明确的某一段数列。用了这个某一段数列,我就折腾开了。

比如,我要A2:A107这段数字,可是由于107是在变的,我不能直接写A2:A107,必须用公式。我先得到107这个值,比如存在B1。这个107是怎么得到呢?match用于返回找到的值的所在行,而不是返回找到的值。

=MATCH(VLOOKUP(9E+304,'Data from FIN'!U:U,1),'Data from FIN'!U:U,0)

然后怎么用这个B1的值,间接表示出A2:A107这段引用呢?

发现方法有两种:

简单的是:用=indirect("'Data from FIN'!$A$2:$A"&$B$1)。indirect就是将字符串转义为引用。有点像C语言中的指针。用address函数可以产生某个单元格的引用。

复杂的是:用=offset('Data from FIN'!$A$1,1,0,$B$1-1,1)。offest是基于某个位置,偏置row行,偏置column列,高height行,宽width列。

另外,就是针对这个数列,数组,矩阵,在函数输完后,按F9,可看到矩阵。逗号表示行,分号表示列。用shift+ctrl+enter表示确认。

请给这篇日志评个分吧~!

本文评分: 5.8/10 (25 votes)    提示:您还未对本文评分,您可以进行评分并发表您的意见!

加入收藏!

发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [注册]