Excel VBA 根据筛选条件自动汇总统计(for 铁虎)

Sub st1()

    Dim r&, i&
    Dim arr, brr
    Dim x, y, z, t, k
    Set d = CreateObject("scripting.dictionary")
    Set d2 = CreateObject("scripting.dictionary")
    Set s = CreateObject("scripting.dictionary")
    Set s2 = CreateObject("scripting.dictionary")
    Set p = CreateObject("scripting.dictionary")
    Set p2 = CreateObject("scripting.dictionary")
    Set q = CreateObject("scripting.dictionary")
    Set q2 = CreateObject("scripting.dictionary")
 
    r = Sheet1.[a65536].End(xlUp).Row
    arr = Range("a2:h" & r)
   
      For i = 1 To UBound(arr)
     
'''''''''''''''''''''''''''''''''''''''''''''筛选条件1

        If Left(arr(i, 7), 6) = "mobile" And (arr(i, 8) = "A" Or arr(i, 8) = "B" Or arr(i, 8) = "C" Or arr(i, 8) = "D") Then
               
             z = arr(i, 2)
            
               x = arr(i, 2): y = arr(i, 6)

                If d.exists(x) = False Then Set d(x) = CreateObject("Scripting.Dictionary")
           
                  d(x)(y) = d(x)(y) + 1
                
                    d2(z) = d2(z) + 1
        End If
       
  ''''''''''''''''''''''''''''''''''''''''''''筛选条件2
 
        If Left(arr(i, 7), 6) = "mobile" And Right(arr(i, 7), 5) = "index" And (arr(i, 8) = "E" Or arr(i, 8) = "F" Or arr(i, 8) = "G") Then
               
             z1 = arr(i, 2)
            
               x1 = arr(i, 2): y1 = arr(i, 6)

                If s.exists(x1) = False Then Set s(x1) = CreateObject("Scripting.Dictionary")
           
                  s(x1)(y1) = s(x1)(y1) + 1
                
                    s2(z1) = s2(z1) + 1
         End If
       
 '''''''''''''''''''''''''''''''''''''''''''''筛选条件3
 
          If Left(arr(i, 7), 5) = "index" And Right(arr(i, 7), 5) = "index" And (arr(i, 8) = "X") Then
               
             z2 = arr(i, 2)
            
               x2 = arr(i, 2): y2 = arr(i, 6)

                If p.exists(x2) = False Then Set p(x2) = CreateObject("Scripting.Dictionary")
           
                  p(x2)(y2) = p(x2)(y2) + 1
                
                    p2(z2) = p2(z2) + 1
          End If
       
 '''''''''''''''''''''''''''''''''''''''''''''筛选条件4
 
          If Left(arr(i, 7), 5) = "index" And Right(arr(i, 7), 5) = "index" And (arr(i, 8) = "Y") Then
               
             z3 = arr(i, 2)
            
               x3 = arr(i, 2): y3 = arr(i, 6)

                If q.exists(x3) = False Then Set q(x3) = CreateObject("Scripting.Dictionary")
           
                  q(x3)(y3) = q(x3)(y3) + 1
                
                    q2(z3) = q2(z3) + 1
          End If
       
      Next
   
'''''''''''''''''''''''''''''''''''''''''''''Date & value1 & value2

    k = d.keys: t = d.items
       
    brr = Array("Date", "Value1", "Value2", "Value3", "Value4", "Value5", "Value6", "Value7", "Value8")
    Sheet2.Range("a1:i1") = brr
   
    Sheet2.[a2].Resize(d.Count) = Application.Transpose(k)
    Sheet2.[b2].Resize(d.Count) = Application.Transpose(d2.items)

    For i = 0 To UBound(k)
      Sheet2.Cells(i + 2, 3) = t(i).Count
   
    Next
   
'''''''''''''''''''''''''''''''''''''''''''''value3 & value4
   
     k1 = s.keys: t1 = s.items
       
    'brr = Array("Date", "Value1", "Value2", "Value3", "Value4", "Value5", "Value6", "Value7", "Value8")
    'Sheet2.Range("a1:i1") = brr
   
    'Sheet2.[a2].Resize(d.Count) = Application.Transpose(k)
    Sheet2.[d2].Resize(d.Count) = Application.Transpose(s2.items)

    For i = 0 To UBound(k1)
      Sheet2.Cells(i + 2, 5) = t1(i).Count
   
    Next
   
 '''''''''''''''''''''''''''''''''''''''''''''value5 & value6
   
     k2 = p.keys: t2 = p.items
       
    Sheet2.[f2].Resize(d.Count) = Application.Transpose(p2.items)

    For i = 0 To UBound(k2)
      Sheet2.Cells(i + 2, 7) = t2(i).Count
   
    Next
   
  '''''''''''''''''''''''''''''''''''''''''''''value7 & value8
   
     k3 = q.keys: t3 = q.items
       
    Sheet2.[h2].Resize(d.Count) = Application.Transpose(q2.items)

    For i = 0 To UBound(k3)
      Sheet2.Cells(i + 2, 9) = t3(i).Count
   
    Next
   
   
End Sub

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值