Excel VBA 根据筛选条件自动汇总统计(for 铁虎) |
您所在的位置:网站首页 › vba多条件多列汇总 › 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 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |