Excel精英培训网

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

[已解决]求教条件统计代码?还请大侠帮忙

[复制链接]
发表于 2012-9-12 16:58 | 显示全部楼层 |阅读模式
求教条件统计代码?还请大侠帮忙。在线跪求了。
最佳答案
2012-9-12 19:03
  1. Option Explicit

  2. Sub lqxs()
  3. Dim arr, i&, aa, j&, Brr, z, nl
  4. Dim d, k, t
  5. Set d = CreateObject("Scripting.Dictionary")
  6. Sheet1.Activate
  7. arr = Sheet2.[a1].CurrentRegion
  8. For i = 3 To UBound(arr)
  9.     d(arr(i, 16)) = d(arr(i, 16)) & i & ","
  10. Next
  11. k = d.keys
  12. t = d.items
  13. ReDim Brr(1 To d.Count, 1 To 27) '定义数组到27
  14. For i = 0 To UBound(k)
  15.     Brr(i + 1, 1) = i + 1
  16.     Brr(i + 1, 2) = k(i)
  17.     aa = Split(t(i), ",")
  18.         For j = 0 To UBound(aa) - 1 '在这里不要去最后一个元素即相当于去除最后一个逗号
  19.             z = arr(aa(j), 4)    '指定区域为第4列
  20.             If Val(Mid(z, 17, 1)) Mod 2 = 1 Then    '如果第四列的一组数第17位能被2整除=1,那么在sheet1第4列中+1
  21.                 Brr(i + 1, 4) = Brr(i + 1, 4) + 1
  22.             Else
  23.                 Brr(i + 1, 5) = Brr(i + 1, 5) + 1 '否则在第五列中加1
  24.             End If
  25.             Brr(i + 1, 3) = Brr(i + 1, 3) + 1    '同时在第三列中+1
  26.             nl = DateSerial(Mid(z, 7, 4), Mid(z, 11, 2), Mid(z, 13, 2))  '取值
  27.             nl = DateDiff("yyyy", nl, Date)
  28.             Select Case nl
  29.                 Case 16 To 35
  30.                     Brr(i + 1, 7) = Brr(i + 1, 7) + 1
  31.                 Case 36 To 44
  32.                     Brr(i + 1, 8) = Brr(i + 1, 8) + 1
  33.                 Case 45 To 59
  34.                     Brr(i + 1, 9) = Brr(i + 1, 9) + 1
  35.                 Case 60 To 69
  36.                     Brr(i + 1, 10) = Brr(i + 1, 10) + 1
  37.                 Case 70 To 79
  38.                     Brr(i + 1, 11) = Brr(i + 1, 11) + 1
  39.                 Case 80 To 89
  40.                     Brr(i + 1, 12) = Brr(i + 1, 12) + 1
  41.                 Case Is >= 90
  42.                     Brr(i + 1, 13) = Brr(i + 1, 13) + 1
  43.             End Select
  44.             Brr(i + 1, 6) = Brr(i + 1, 6) + 1
  45.             
  46.            Select Case arr(aa(j), 10)
  47.                 Case 100
  48.                     Brr(i + 1, 15) = Brr(i + 1, 15) + 1
  49.                 Case 200
  50.                     Brr(i + 1, 16) = Brr(i + 1, 16) + 1
  51.                 Case 300
  52.                     Brr(i + 1, 17) = Brr(i + 1, 17) + 1
  53.                 Case 400
  54.                     Brr(i + 1, 18) = Brr(i + 1, 18) + 1
  55.                 Case 500
  56.                     Brr(i + 1, 19) = Brr(i + 1, 19) + 1
  57.                 Case 600
  58.                     Brr(i + 1, 20) = Brr(i + 1, 20) + 1
  59.                 Case 700
  60.                     Brr(i + 1, 21) = Brr(i + 1, 21) + 1
  61.                 Case 800
  62.                     Brr(i + 1, 22) = Brr(i + 1, 22) + 1
  63.                 Case 900
  64.                     Brr(i + 1, 23) = Brr(i + 1, 23) + 1
  65.                 Case 1000
  66.                     Brr(i + 1, 24) = Brr(i + 1, 24) + 1
  67.                End Select
  68.          
  69.             If arr(aa(j), 13) <> "" Then Brr(i + 1, 25) = Brr(i + 1, 25) + 1 '这里是处理特殊人群的。
  70.             Select Case arr(aa(j), 8)
  71.                 Case "新型农村社会养老保险"
  72.                     Brr(i + 1, 26) = Brr(i + 1, 26) + 1
  73.                 Case "城镇居民社会养老保险"
  74.                     Brr(i + 1, 27) = Brr(i + 1, 27) + 1
  75.             End Select
  76.         Next
  77.        Brr(i + 1, 14) = Brr(i + 1, 15) + Brr(i + 1, 16) + Brr(i + 1, 17) + Brr(i + 1, 18) + Brr(i + 1, 19) _
  78.                     + Brr(i + 1, 20) + Brr(i + 1, 21) + Brr(i + 1, 22) + Brr(i + 1, 23) + Brr(i + 1, 24)
  79. Next
  80. [b7].Resize(15, 27).ClearContents
  81. [a7].Resize(UBound(Brr), 27) = Brr
  82. End Sub
复制代码

条件统计.zip

26.17 KB, 下载次数: 7

发表于 2012-9-12 19:03 | 显示全部楼层    本楼为最佳答案   
  1. Option Explicit

  2. Sub lqxs()
  3. Dim arr, i&, aa, j&, Brr, z, nl
  4. Dim d, k, t
  5. Set d = CreateObject("Scripting.Dictionary")
  6. Sheet1.Activate
  7. arr = Sheet2.[a1].CurrentRegion
  8. For i = 3 To UBound(arr)
  9.     d(arr(i, 16)) = d(arr(i, 16)) & i & ","
  10. Next
  11. k = d.keys
  12. t = d.items
  13. ReDim Brr(1 To d.Count, 1 To 27) '定义数组到27
  14. For i = 0 To UBound(k)
  15.     Brr(i + 1, 1) = i + 1
  16.     Brr(i + 1, 2) = k(i)
  17.     aa = Split(t(i), ",")
  18.         For j = 0 To UBound(aa) - 1 '在这里不要去最后一个元素即相当于去除最后一个逗号
  19.             z = arr(aa(j), 4)    '指定区域为第4列
  20.             If Val(Mid(z, 17, 1)) Mod 2 = 1 Then    '如果第四列的一组数第17位能被2整除=1,那么在sheet1第4列中+1
  21.                 Brr(i + 1, 4) = Brr(i + 1, 4) + 1
  22.             Else
  23.                 Brr(i + 1, 5) = Brr(i + 1, 5) + 1 '否则在第五列中加1
  24.             End If
  25.             Brr(i + 1, 3) = Brr(i + 1, 3) + 1    '同时在第三列中+1
  26.             nl = DateSerial(Mid(z, 7, 4), Mid(z, 11, 2), Mid(z, 13, 2))  '取值
  27.             nl = DateDiff("yyyy", nl, Date)
  28.             Select Case nl
  29.                 Case 16 To 35
  30.                     Brr(i + 1, 7) = Brr(i + 1, 7) + 1
  31.                 Case 36 To 44
  32.                     Brr(i + 1, 8) = Brr(i + 1, 8) + 1
  33.                 Case 45 To 59
  34.                     Brr(i + 1, 9) = Brr(i + 1, 9) + 1
  35.                 Case 60 To 69
  36.                     Brr(i + 1, 10) = Brr(i + 1, 10) + 1
  37.                 Case 70 To 79
  38.                     Brr(i + 1, 11) = Brr(i + 1, 11) + 1
  39.                 Case 80 To 89
  40.                     Brr(i + 1, 12) = Brr(i + 1, 12) + 1
  41.                 Case Is >= 90
  42.                     Brr(i + 1, 13) = Brr(i + 1, 13) + 1
  43.             End Select
  44.             Brr(i + 1, 6) = Brr(i + 1, 6) + 1
  45.             
  46.            Select Case arr(aa(j), 10)
  47.                 Case 100
  48.                     Brr(i + 1, 15) = Brr(i + 1, 15) + 1
  49.                 Case 200
  50.                     Brr(i + 1, 16) = Brr(i + 1, 16) + 1
  51.                 Case 300
  52.                     Brr(i + 1, 17) = Brr(i + 1, 17) + 1
  53.                 Case 400
  54.                     Brr(i + 1, 18) = Brr(i + 1, 18) + 1
  55.                 Case 500
  56.                     Brr(i + 1, 19) = Brr(i + 1, 19) + 1
  57.                 Case 600
  58.                     Brr(i + 1, 20) = Brr(i + 1, 20) + 1
  59.                 Case 700
  60.                     Brr(i + 1, 21) = Brr(i + 1, 21) + 1
  61.                 Case 800
  62.                     Brr(i + 1, 22) = Brr(i + 1, 22) + 1
  63.                 Case 900
  64.                     Brr(i + 1, 23) = Brr(i + 1, 23) + 1
  65.                 Case 1000
  66.                     Brr(i + 1, 24) = Brr(i + 1, 24) + 1
  67.                End Select
  68.          
  69.             If arr(aa(j), 13) <> "" Then Brr(i + 1, 25) = Brr(i + 1, 25) + 1 '这里是处理特殊人群的。
  70.             Select Case arr(aa(j), 8)
  71.                 Case "新型农村社会养老保险"
  72.                     Brr(i + 1, 26) = Brr(i + 1, 26) + 1
  73.                 Case "城镇居民社会养老保险"
  74.                     Brr(i + 1, 27) = Brr(i + 1, 27) + 1
  75.             End Select
  76.         Next
  77.        Brr(i + 1, 14) = Brr(i + 1, 15) + Brr(i + 1, 16) + Brr(i + 1, 17) + Brr(i + 1, 18) + Brr(i + 1, 19) _
  78.                     + Brr(i + 1, 20) + Brr(i + 1, 21) + Brr(i + 1, 22) + Brr(i + 1, 23) + Brr(i + 1, 24)
  79. Next
  80. [b7].Resize(15, 27).ClearContents
  81. [a7].Resize(UBound(Brr), 27) = Brr
  82. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2012-9-13 09:19 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 21:23 , Processed in 0.181356 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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