Mik*_*keD 11 excel excel-formula
我在Excel 2003中有一个类似数据库的表,第一行包含自动筛选的单个标题行,第7行到第160行的数据.第1 - 5行是表标题,列组标题和说明我不能摆脱.
我还在数字列中显示SUM(X6:X160)和SUBTOTAL(109,X6:X160)在此区域中.我不想在表的底部显示这个,因为有几个用户经常向该表添加行,并且他们会定期销毁这些公式.
问题:每当用户将数据添加到表的末尾时,就需要更新SUM和SUBTOTAL公式以扩展范围 - 不用说 - 大部分都被遗忘了.
我可以自己扩展公式以覆盖-say-行500的所有行并隐藏剩余的行,因此用户需要在到达表的可见末尾时"插入"行 - 这反过来会更新公式,但我不认为这是一种非常安全的方式...了解我的用户.
问题:有没有办法从X6" 到列X的末尾创建SUM和SUBTOTAL "?
结论
我使用SUM(OFFSET(....)),从标题中的新字段中获取"height"参数,该字段显示"记录数"a =COUNTA($A:$A)-1(-1表示列的标题文本) ,从业务环境中可以清楚地看出,A列中的任何有效数据记录都必须存在一个键值,并且不允许空白行(我可以至少训练用户) - 加上用户不仅可以看到SUM的好处但现在还有标题冻结窗格中的COUNT个记录.
使用Offset()和Count()似乎是最受欢迎的,我确信使用效率最高.
=SUM(OFFSET($X$6,0,0,COUNT($X$6:$X$1000)))
Run Code Online (Sandbox Code Playgroud)
就个人而言,我倾向于使用Indirect()做很多事情.它可能会运行得更慢,但它的工作原理.它帮助我看到正在创建的范围.但是要小心,因为部分范围是用文本保存的,所以当你移动公式时它不会更新.那会让你失望.无论如何,你在这里.
=SUM(INDIRECT("$X$6:$X$" & COUNT($X$6:$X$1000)))
Run Code Online (Sandbox Code Playgroud)
您可以使用iDevlop指出的动态范围,或者像我刚才那样将Offset()或Indirect()放在Sum()中.
无论哪种方式,您都要小心,因为Indirect()和Offset()是易失性函数.通常你想避免.
我也找到了这个使用Index()和Match()的人,它们不是volatile函数.
编辑:
想一想(因为我只是在我的电子表格上做过)..
如果您知道您的数据将具有合理的限制,例如1000,您可以使用=SUM($X$6:$X$1000)并且它将跳过空白,即使对于小计方法1或101(平均值).
| 归档时间: |
|
| 查看次数: |
47502 次 |
| 最近记录: |