excel学习库

excel表格_excel函数公式大全_execl从入门到精通

Excel 如何实现动态求和(二)

excel 实现动态求和上一篇文章中讲到了Excel动态求和中需要使用到的基础函数:address函数的用法。本文是动态求和系列文章的第三篇(第一篇是)。本文主要讲indirect函数的使用。

先看回在offset一文中使用到的动态求和函数:

动态求和函数

其中的 indirect 部分:

INDIRECT(ADDRESS(COUNTA(C:C),3,4,TRUE))

前文用address函数已经得到了销量最后一行的单元格位置是C23

address(counta(c:c), 3, 4, true)

但是这时候,如果直接把address函数的结果作为offset函数的参数位置,是得不到预想的结果的:

offset 直接套 address 结果

实际上,软件会直接报错,提示用户输入的不是一个有效的公式。但是给出的描述对用户来说并没有正确地指出问题来。

这里报错的原因是因为address函数得到的是一个文本字符串:C23。对于电子表格软件来说,这个“C23”跟“今天天气很好”这样的文本没有区别,软件并不知道它指的是一个单元格位置。

这就是本文要讲的indirect函数的作用了。

先看看indirect的函数说明和签名

indirect 函数描述 indirect 函数签名

它有2个参数,第1个是必填的,表示“单元格引用”。其实WPS这里的说明会产生误导。准确地说第1个参数是“表示单元格位置的文本”。如果这里直接写C23,会得到一个错误引用:

indirect 直接输入单元格地址

它要的是一个文本格式的,也就是要加上双引号:

正确的 indirect 用法

这下应该知道它的用法了。至于第2个参数,跟前文讲到的address函数的第3个参数一样。通常忽略它就可以。

所以要让前文得到的address函数得到的结果起作用,还要加上这个indirect函数。如此一来,在当前的表中,以下两个公式是相等的:


=SUM(OFFSET(INDIRECT(ADDRESS(COUNTA(C:C),3,4)),0,0,-7,1))

=SUM(OFFSET(C23,0,0,-7,1))

所以没错,我们折腾了两篇文章讲的 address+indirect 函数的目的,就是为了得到这个 C23 单元格的引用。但这肯定不是多此一举,因为当表格中的数据(行数)增加时,比如增加了一行,共有24行,则上面的第1条公式实际上就变成了

=SUM(OFFSET(C24,0,0,-7,1))

INDIRECT(ADDRESS(COUNTA(C:C),3,4)) 就能引用到 C25 单元格。我们的初衷就是要实现动态求和,只有这样才能实现“动态”的效果!否则每增加一行就都需要人工修改求和范围,完全起不到“自动”的效果。

至此,动态求和涉及的三个核心函数都已经讲完。下一篇再重新梳理一下动态求和公式的实现逻辑。敬请期待!

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接