Excel精英培训网

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

[已解决]追问爱老师,同样要求且是多列求和怎么写代码?请教=双层=向下求和

[复制链接]
发表于 2012-11-22 13:29 | 显示全部楼层 |阅读模式
每个市分别下辖直管和非直管的县,除对各个直管县和非直管县向下求和之外,还需要对每个市求和。需要求和的数据为多列。
附件已经更新,请爱老师再次不吝赐教!
最佳答案
2012-11-22 15:20

  1. Sub 按钮62_Click()
  2.     Dim A, i%, j%, k%, x&, s&
  3.     With Sheets("sheet1")
  4.         A = .Range("a1:f" & .Range("a65536").End(xlUp).Row)
  5.         
  6.         For j = 2 To UBound(A, 2)
  7.             For i = UBound(A) To 2 Step -1
  8.             
  9.                 If InStr(A(i, 1), "小计") Then
  10.                     k = k + 1
  11.                     Select Case k
  12.                     Case 1    '其它
  13.                         A(i, j) = s: x = x + s: s = 0
  14.                     Case 2    '直管
  15.                         A(i, j) = s: x = x + s: s = 0
  16.                     Case 3    '市
  17.                         A(i, j) = x: x = 0: k = 0
  18.                     End Select
  19.                 Else
  20.                     s = s + A(i, j)
  21.                 End If
  22.             Next i
  23.             
  24.         Next j
  25.         .Range("a1").Resize(UBound(A), UBound(A, 2)) = A
  26.     End With
  27. End Sub
复制代码
Book3c.rar (12.14 KB, 下载次数: 19)
未命名.jpg

Book3b.rar

9.29 KB, 下载次数: 9

发表于 2012-11-22 15:20 | 显示全部楼层    本楼为最佳答案   

  1. Sub 按钮62_Click()
  2.     Dim A, i%, j%, k%, x&, s&
  3.     With Sheets("sheet1")
  4.         A = .Range("a1:f" & .Range("a65536").End(xlUp).Row)
  5.         
  6.         For j = 2 To UBound(A, 2)
  7.             For i = UBound(A) To 2 Step -1
  8.             
  9.                 If InStr(A(i, 1), "小计") Then
  10.                     k = k + 1
  11.                     Select Case k
  12.                     Case 1    '其它
  13.                         A(i, j) = s: x = x + s: s = 0
  14.                     Case 2    '直管
  15.                         A(i, j) = s: x = x + s: s = 0
  16.                     Case 3    '市
  17.                         A(i, j) = x: x = 0: k = 0
  18.                     End Select
  19.                 Else
  20.                     s = s + A(i, j)
  21.                 End If
  22.             Next i
  23.             
  24.         Next j
  25.         .Range("a1").Resize(UBound(A), UBound(A, 2)) = A
  26.     End With
  27. End Sub
复制代码
Book3c.rar (12.14 KB, 下载次数: 19)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 15:46 , Processed in 0.883856 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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