Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1750|回复: 5

[已解决]求代码,如果G列有空单元格,则求上面单元格的和

[复制链接]
发表于 2016-12-22 19:27 | 显示全部楼层 |阅读模式
页数结果
1
1
5
5
1
1
21
21
1
1
1
1
1
1
1
1
32
1
1
5
5
1
1
21
21
1
1
1
1
1
1
1
1
32
1
1
5
5
1
1
20
20
1
1
1
1
1
1
1
1
1
1
32
左边是情况,右边是想要的结果,我知道alt+"+"可以做到,但我更想要代码{:021:}求高手
最佳答案
2016-12-22 21:20
本帖最后由 today0427 于 2016-12-22 21:23 编辑
  1. Sub today()
  2.     Dim i&, n&, arr
  3.     arr = Range("g2:g" & [g65536].End(3).Row + 1)
  4.     For i = 1 To UBound(arr)
  5.         If arr(i, 1) <> "" Then
  6.             n = n + arr(i, 1)
  7.         Else
  8.             arr(i, 1) = n: n = 0
  9.         End If
  10.     Next
  11.     Columns("i:i").Clear
  12.     [i2].Resize(i - 1, 1) = arr
  13. End Sub

复制代码

空单元格求和.rar (27.3 KB, 下载次数: 3)

空单元格求和.rar

17.26 KB, 下载次数: 3

发表于 2016-12-22 19:38 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2016-12-22 20:48 | 显示全部楼层
回复

使用道具 举报

发表于 2016-12-22 21:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 today0427 于 2016-12-22 21:23 编辑
  1. Sub today()
  2.     Dim i&, n&, arr
  3.     arr = Range("g2:g" & [g65536].End(3).Row + 1)
  4.     For i = 1 To UBound(arr)
  5.         If arr(i, 1) <> "" Then
  6.             n = n + arr(i, 1)
  7.         Else
  8.             arr(i, 1) = n: n = 0
  9.         End If
  10.     Next
  11.     Columns("i:i").Clear
  12.     [i2].Resize(i - 1, 1) = arr
  13. End Sub

复制代码

空单元格求和.rar (27.3 KB, 下载次数: 3)

评分

参与人数 1 +20 金币 +20 收起 理由
望帝春心 + 20 + 20 来学习,today姐姐好腻害!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2016-12-22 22:03 | 显示全部楼层

arr(i, 1) = n: n = 0这句不是很明白,能解释一下吗?

最后一句也不懂啊
VBA果然还是很难懂的啊~{:021:}
回复

使用道具 举报

发表于 2016-12-22 22:55 | 显示全部楼层
n是用来合计的,如果单元格不为空,就把这个格子的数字加起来,n = n + arr(i, 1),加到一定程度碰到空单元格,就把n这个合计的总数放进这个格中,然后n归0,继续开始重新合计下一单元格。vba这样学不行,得从基础开始。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 06:05 , Processed in 0.307650 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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