《vba吧提问-怎么写每月合计的代码》,对表格中每月合计的行进行计算

Sub 选中列每月合计()'适用单/多列选中、单/多列部分选中Dim rng As Range, first_row, last_row, first_col, last_col, col_add, sum_j, imonth_total = Array(1, "本月合计")  '每月合计所在列号Set rng = Intersect(ActiveSheet.UsedRange, Selection)  'intersect语句避免选择整列造成无用计算first_row = rng.Row     '选中区域开始行号last_row = first_row + rng.Rows.count - 1  '选中区域结束行号first_col = rng.Column  '选中区域开始列号last_col = first_col + rng.Columns.count - 1  '选中区域结束列号col_add = Split(Columns(first_col).Address(0, 0), ":")  '选中区域开始行号字母sum_j = first_rowFor i = first_row To last_rowIf InStr(Cells(i, CInt(month_total(0))), CStr(month_total(1))) > 0 ThenCells(i, first_col).Formula = "=SUM(" & col_add(0) & sum_j & ":" & col_add(0) & i - 1 & ")"If last_col > first_col Then  '单列AutoFill报错Cells(i, first_col).AutoFill Destination:=Range(Cells(i, first_col), Cells(i, last_col))End IfRange(Cells(i, first_col), Cells(i, last_col)).Value = Range(Cells(i, first_col), Cells(i, last_col)).ValueRange(Cells(i, first_col), Cells(i, last_col)).Interior.Color = vbYellow  '清除公式,标记颜色sum_j = i + 1  '更新值避免重复计算End IfNextEnd Sub

举例

自动按月合计

参照《Excel·VBA选中列一键计算小计总计》,对上面的代码改为自动按月合计,无需事先在每个月份后手动添加“本月合计”行,使用更加方便

Sub 选中列自动每月合计()'适用单/多列选中、单/多列部分选中;上一个sub的自动按月版Dim key_col&, rng As Range, i&, j&, k&Dim first_row&, last_row&, first_col&, last_col&, start_row&, end_row&
'--------------------参数填写:key_col都为数字key_col = 1    '日期列号,对连续相同月份的进行合计;非日期不统计Set rng = Intersect(ActiveSheet.UsedRange, Selection)  'intersect语句避免选择整列造成无用计算first_row = rng.row     '选中区域开始行号last_row = first_row + rng.Rows.Count - 1  '选中区域结束行号first_col = rng.column  '选中区域开始列号last_col = first_col + rng.Columns.Count - 1  '选中区域结束列号With ActiveSheetstart_row = first_row: end_row = last_row + 1  'end_row+1方便最后一个区域计算DoIf TypeName(.Cells(start_row, key_col).Value) <> "Date" Thenstart_row = start_row + 1Elsemonth_s = Format(.Cells(start_row, key_col), "yyyy.mm")  '年月For j = start_row + 1 To end_rowmonth_t = Format(.Cells(j, key_col), "yyyy.mm")If TypeName(.Cells(j, key_col).Value) <> "Date" Or month_t <> month_s Then  '非日期、非同月.Rows(j).Insert.Cells(j, key_col) = month_s & "合计"For k = first_col To last_col.Cells(j, k).FormulaR1C1 = "=SUM(R[-" & j - start_row & "]C:R[-1]C)"Next'也可清除公式仅保留结果Range(.Cells(j, first_col), .Cells(j, last_col)).Value = Range(.Cells(j, first_col), .Cells(j, last_col)).Valuestart_row = j + 1: end_row = end_row + 1  '开始、结束行号更新值Exit For  '结束for循环End IfNextEnd IfLoop Until start_row >= end_rowEnd WithDebug.Print "按月合计行插入完成"
End Sub

Excel·VBA一键计算每月合计相关推荐

  1. 利用Excel VBA批量计算长时间序列植被物候动态阈值(逐像元)

    本文演示利用Excel VBA编程实现多期栅格数据,逐像元计算物候参数:生长季始期(SOS).生长季末期(EOS)和生长季长度(LOS),计算过程速度快! 说明: (1)利用Raster to Poi ...

  2. 利用Excel VBA批量计算气象数据多个台站多年来春季和冬季降水量和平均气温

    气象数据是地理数据的重要组成部分,存储量虽然不大,但是处理过程非常繁琐,长时序数据更不用说.本文总结了一个气象数据的基本处理方法. 如下图所示,气象数据的排列格式是区站号→年→月→降水量→平均气温,时 ...

  3. Excel VBA: 一键删除表格中所有图形、图片

    Excel表格中插入图形.图片,有时能增强可读性,但插入过多难以管理,而且会导致Excel文件过大,打开速度明显变慢.如果不想再保留这些图形.图片,可以使用以下VBA宏一键删除表格中所有图形.图片,包 ...

  4. Excel VBA:计算BOM*Planning

    前面已经使用VBA对所有生产线的排产进行了汇总,以及从Oracle中分解BOM直至采购层. 接下来,我们实现将成品的Planning,转换为物料的Planning: 基础资料: 1,BOM的格式: 2 ...

  5. Excel·VBA选中列一键计算小计总计

    不同于<Excel·VBA一键计算每月合计>,仅对指定关键字计算合计数,而本文可以实现对选中列自动插入小计.总计行并求和 目录 连续相同关键值自动小计 举例 固定行数分段自动小计 连续相同 ...

  6. oracle 统计一年中每个月数据总和_excel表格有每月数据 怎样统计全年的-用excel公式怎样计算每年每个月的数据总和?...

    excel表格中如何统计1月到12月的数据 我用的是Excel07版为你的表已经是存在的,并能力有限,所只能给你说下面这一种方法了,用着也单的!下边我做一个示范: 第一步 在Excel表格右侧空白任意 ...

  7. 建筑幕墙单元体.组装件.零部件计算.查询器(Excel VBA版)

    ​前言: 本篇是建筑幕墙零部件计算器(Excel版)的使用说明书. 零部件计算与查询器为建筑幕墙设计专用程序,适用于有查询及算料需求的幕墙设计或工厂算料人员使用.(程序亦适用于迭代递归的材料计算) 程 ...

  8. excel 透视表 vba_使用Excel VBA删除数据透视表计算字段

    excel 透视表 vba Yesterday, I started out with the best of intentions, planning to get some work done, ...

  9. 请用python写一段代码:根据excel表中电费缴费时间及购电量计算每月用电量

    答案:import pandas as pd# 读取excel表 data = pd.read_excel('电费缴费表.xlsx')# 计算每月用电量 monthly_usage = data.gr ...

最新文章

  1. 在这个时代,如何管理好95后员工?
  2. php麻将机器人ai算法,高性能麻将AI算法
  3. .Net中删除数据前进行外键冲突检测
  4. BZOJ 4826 【HNOI2017】 影魔
  5. android点击改变背景色的动画,Lottie-android 修改动画颜色
  6. Dubbo Mesh | 阿里巴巴中间件团队在 Service Mesh 的实践和探索(附PPT)
  7. ng-repeat循环出来的部分调用同一个函数并且实现每个模块之间不能相互干扰
  8. 伪元素before、after示例
  9. 格力发布公告称双11期间让利30亿元打击低质伪劣产品
  10. 51 nod 1439 互质对(Moblus容斥)
  11. Drawbot赋能商家: 智能助手主打上新详情
  12. 恋恋风辰 对于redis底层框架的理解(一)
  13. 你还不懂云计算吗?资深互联网老大详细讲解云计算的应用
  14. 电源篇 -- 升压电路 Boost
  15. 关于解决miui10国际版刷入之后无法认证的问题
  16. 【机器学习概率统计】18 隐马尔科夫模型:明暗两条线
  17. C#中使用ribbon界面
  18. 王垠面阿里P9,面跪后与P10赵海平互怼:人性最大的愚蠢,是互相为难
  19. 高大上的数据可视化图表,只需6步就能完成
  20. 国外大学计算机mac,美国大学教授发现一台30多年前苹果电脑 还能正常运行

热门文章

  1. PTA 7-6 鸡群的怜悯 (C语言)
  2. Python openpyxl 蔬菜价格明细表变动
  3. 耐克中国物流中心三期在江苏太仓落成和运营
  4. 优麒麟 20.04 LTS Pro 发布 - 以初心,铸匠心
  5. 使用@media实现网页字体大小自适应
  6. 现在小屁孩黑客太牛B了
  7. BigBrother的大数据之旅Day 2 Linux(2)
  8. python分行输入_python换行输入
  9. 导入maven项目,报错Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:mav
  10. 多读书,更要多多悦读