ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 54478|回复: 56

[原创] Excel隔列求和运用

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2010-2-4 10:34 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
通过网上及本论坛的里的学习,本人将Excel的隔行求和作如下整理:

  如:有A、B、C、D、E、F、G、H、I、J列,下面对第一行做示例,余下行可以复制公式
一手工求和:求奇数列:K1=A1+C1+E1+G1+I1
                       求偶数列:L1=B1+D1+F1+H1+J1
以上比较愚笨
二是SUM公式:求奇数列:K1=SUM(A1,C1,E1,G1,I1)
                          求偶数列:L1=SUM(B1,D1,F1,H1,J1)
这个与第一种样的效果,不高明
三是用SUM的数组公式:求奇数列K1=SUM(A1:J1*(MOD(COLUMN(A1:J1),2)=1))
         首先在 K1的编辑栏输入上述公式,然后按下“Ctrl+Shift+Enter”快捷键  ,生成数组公式   
         偶数列为: L1=SUM(A1:J1*(MOD(COLUMN(A1:J1),2)=0))   

          简单地解释一下:COLUMN函数可以得到所在列的列数,比如公式“=COLUMN(C2)”得到的结果就是“3”。而MOD函数是取余数的,比如“=MOD(9,2)”就是计算9除以2所得到的余数。按下“Ctrl+Shift+Enter”快捷键是为了得到数组公式。上面的公式其实最终的计算方式是:A1:J1区域中的每一单元格逐个与当前单元格所在列的列数除以2所得的余数判断为一个1,0组成的数组{1,0,1,0,1,0,1,0,1,0}相乘,并将所得的结果累加。

四是用 SUMPRODUCT  公式:
        求奇数列K1=SUMPRODUCT(A1:J1,MOD(COLUMN(A1:J1),2))
        求偶数列L1=SUMPRODUCT(A1:J1,1-MOD(COLUMN(A1:J1),2))
      简单解释一下:SUMPRODUCT公式计算在给定的几组数组中,将数组间对应的元素相乘,并返回乘积之和,
以上公式就是类似SUM的数组公式,MOD(COLUMN(A1:J1),2))会计算出这样一个数组{1,0,1,0,1,0,1,0,1,0},可以看出求奇数列时偶数列乘上了0,求和自然不计算在内了。可求偶数列呢?只能加一个计算就是用1去减数组的每个值形成如下数组{0,1,0,1,0,1,0,1,0,1},奇数列就乘上了0,求和就不计算在内了。

延伸一下,如果每隔2列,或者3列求和的话,可以用第三种方式,SUM数组公式
MOD函数求余数时就可以改为3,或者4了,然后加以判断得出类似的由0,1组成的数组

隔列求和.rar

6.09 KB, 下载次数: 1274

TA的精华主题

TA的得分主题

发表于 2010-2-4 10:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-2-4 10:43 | 显示全部楼层
楼主用心思考,总结。精神推荐。

TA的精华主题

TA的得分主题

发表于 2010-2-4 10:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这类帖子很多,楼主总结的很好
补充一点,如隔行求和,column改为row

TA的精华主题

TA的得分主题

发表于 2010-2-4 11:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
赞!!!!!

TA的精华主题

TA的得分主题

发表于 2010-2-7 09:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-6-10 14:19 | 显示全部楼层

回复 1楼 chenagui 的帖子

如果是3,怎么得到{0,0,1}这样的数组?

TA的精华主题

TA的得分主题

发表于 2010-6-10 14:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 dathesea 于 2010-6-10 14:19 发表
如果是3,怎么得到{0,0,1}这样的数组?

int(column(A:C)/3)

TA的精华主题

TA的得分主题

发表于 2010-6-19 08:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
非常棒的,特别是带解释

TA的精华主题

TA的得分主题

发表于 2010-6-19 09:29 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 04:58 , Processed in 0.046802 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表