Excel精英培训网

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

[已解决]看看我的代码错在哪了?

[复制链接]
发表于 2012-1-14 09:55 | 显示全部楼层 |阅读模式
根据条件汇总求和和累计.zip (41.87 KB, 下载次数: 48)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-1-14 10:25 | 显示全部楼层
简明扼要的写上你的计算规则,结果要求,你目前存在的问题会有助于你尽快的解决问题。
回复

使用道具 举报

发表于 2012-1-14 10:53 | 显示全部楼层
根据你公式的意思重新写了一段代码,也不知道能不能满足你的要求:

Sub 累计()
  Dim iA&, iC&, arrA, arrC, s$, c%, brr()
  arrA = Sheet1.Range("a2:d" & Sheet1.Range("a65536").End(3).Row)
  arrC = Sheet3.Range("a3:a" & Sheet3.Range("a65536").End(3).Row)
  ReDim brr(1 To UBound(arrC), 1 To 5)
  s = "甲乙丙丁"
  For iC = 1 To UBound(arrC)
    For iA = 1 To UBound(arrA)
      If arrA(iA, 3) > 0 Then
        If arrA(iA, 1) <= arrC(iC, 1) Then
          c = InStr(s, arrA(iA, 4))
          brr(iC, c) = brr(iC, c) + arrA(iA, 2)
          brr(iC, 5) = brr(iC, 5) + arrA(iA, 2)
        End If
      End If
    Next
  Next
  With Range("b3").Resize(UBound(arrC), 5)
    .ClearContents
    .Value = brr
  End With
End Sub
回复

使用道具 举报

发表于 2012-1-14 11:27 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunjing-zxl 于 2012-1-14 11:29 编辑

  1. Sub bbb()
  2.     Dim arr33(1 To 31, 1 To 5)
  3.     Dim a As String
  4.     Dim arr, arr1, arr3
  5.     Dim Row1 As Long, Row3 As Long, i As Long, j As Long
  6.     With Sheets("A")
  7.         Row1 = .Range("A65536").End(xlUp).Row
  8.         arr1 = .Range("A2:D" & Row1)
  9.     End With
  10.     With Sheets("C")
  11.         Row3 = .Range("A65536").End(xlUp).Row
  12.         arr3 = .Range("A3:A" & Row3)
  13.         a = "甲乙丙丁"
  14.         For i = 1 To UBound(arr3)
  15.             For J1 = 1 To UBound(arr1)
  16.                 If arr1(J1, 3) > 0 Then
  17.                     If arr1(J1, 1) = arr3(i, 1) Then
  18.                         arr33(arr1(J1, 1), InStr(a, arr1(J1, 4))) = arr33(arr1(J1, 1), InStr(a, arr1(J1, 4))) + arr1(J1, 2)
  19.                         arr33(arr1(J1, 1), 5) = arr33(arr1(J1, 1), 5) + arr1(J1, 2)
  20.                     End If
  21.                 End If
  22.             Next J1
  23.         Next i
  24.         arr = arr33
  25.         ReDim arr1(1 To UBound(arr), 1 To 5)
  26.         For i = 1 To UBound(arr)
  27.             For j = 1 To 5
  28.                 If i = 1 Then
  29.                     arr1(i, j) = arr(i, j)
  30.                 Else
  31.                     arr1(i, j) = arr(i, j) + arr1(i - 1, j)
  32.                 End If
  33.             Next j
  34.         Next i
  35.         Range("G3").Resize(31, 5).ClearContents
  36.         Range("G3").Resize(UBound(arr1), 5) = arr1
  37.     End With
  38. End Sub


复制代码
附件: 根据条件汇总求和和累计-sunjing.rar (34.12 KB, 下载次数: 6)
回复

使用道具 举报

 楼主| 发表于 2012-1-14 16:40 | 显示全部楼层
两位老师的代码都不错,我又学习到了两种方法,但我只能给一个最佳,还是要谢谢两位老师的帮助!{:321:}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 21:14 , Processed in 0.271724 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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