Excel精英培训网

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

[已解决]看的人多了,帮忙的人少了

[复制链接]
发表于 2012-2-21 11:04 | 显示全部楼层 |阅读模式
本帖最后由 mcgrady5213 于 2012-2-21 11:22 编辑

看的人多了,帮忙的人少了
最佳答案
2012-2-21 11:47
  1. Sub a()
  2.   Dim i As Integer, k As Integer, j As Integer
  3.       j = Cells(2, 2)
  4.       k = 2
  5.     For i = 2 To [a65536].End(3).Row
  6.       If Cells(i + 1, 1) = Cells(i, 1) Then
  7.         j = j + Cells(i + 1, 2)
  8.       Else
  9.         Cells(k, 3) = j
  10.         k = i + 1
  11.         j = Cells(i + 1, 2)
  12.       End If
  13.     Next i
  14. End Sub
复制代码

新建 Microsoft Excel 工作表.rar

3.97 KB, 下载次数: 41

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-2-21 11:47 | 显示全部楼层    本楼为最佳答案   
  1. Sub a()
  2.   Dim i As Integer, k As Integer, j As Integer
  3.       j = Cells(2, 2)
  4.       k = 2
  5.     For i = 2 To [a65536].End(3).Row
  6.       If Cells(i + 1, 1) = Cells(i, 1) Then
  7.         j = j + Cells(i + 1, 2)
  8.       Else
  9.         Cells(k, 3) = j
  10.         k = i + 1
  11.         j = Cells(i + 1, 2)
  12.       End If
  13.     Next i
  14. End Sub
复制代码
回复

使用道具 举报

发表于 2012-2-21 15:20 | 显示全部楼层
zjcat35 发表于 2012-2-21 11:47

好方法,又是改成数组就更好了。
回复

使用道具 举报

发表于 2012-2-21 15:55 | 显示全部楼层
本帖最后由 zjcat35 于 2012-2-21 15:56 编辑
蓝天一片云 发表于 2012-2-21 15:20
好方法,又是改成数组就更好了。
  1. Sub a()
  2. Dim i As Integer, k As Integer, j As Integer, arr
  3. j = Cells(2, 2)
  4. k = 1
  5. ReDim arr(1 To [a65536].End(3).Row - 1)
  6. For i = 2 To [a65536].End(3).Row
  7. If Cells(i + 1, 1) = Cells(i, 1) Then
  8. j = j + Cells(i + 1, 2)
  9. Else
  10. arr(k) = j
  11. k = i
  12. j = Cells(i + 1, 2)
  13. End If
  14. Next i
  15. Range("c2").Resize(UBound(arr), 1) = Application.Transpose(arr)
  16. End Sub
复制代码


数组的
回复

使用道具 举报

发表于 2012-2-21 19:21 | 显示全部楼层
蓝天一片云 发表于 2012-2-21 15:20
好方法,又是改成数组就更好了。

数组的
  1. Sub test()
  2.     Dim i, j As Long
  3.     Dim ar
  4.     ar = Range("a1:c" & Range("a65536").End(xlUp).Row)
  5.     For i = UBound(ar) To 2 Step -1
  6.         j = j + ar(i, 2)
  7.         If ar(i, 1) <> ar(i - 1, 1) Then
  8.             ar(i, 3) = j
  9.             j = 0
  10.         End If
  11.     Next
  12.     Range("c1:c65536").ClearContents
  13.     Range("c1").Resize(UBound(ar)) = Application.Index(ar, , 3)
  14. End Sub
复制代码


回复

使用道具 举报

发表于 2012-2-22 13:04 | 显示全部楼层
hrpotter 发表于 2012-2-21 19:21
数组的

数组方法好!学习了。谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 21:56 , Processed in 0.268413 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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