Sub 作业一()
Dim arr, arr1, arr2, d, d1, d2, i, n, x, y, z, k, t
Set d = CreateObject("scripting.dictionary")
Set d1 = CreateObject("scripting.dictionary")
Set d2 = CreateObject("scripting.dictionary")
arr = Range("a2:c111")
For i = LBound(arr) To UBound(arr)
d(arr(i, 1) & arr(i, 2)) = d(arr(i, 1) & arr(i, 2)) + arr(i, 3)
d1(arr(i, 1)) = ""
d2(arr(i, 2)) = ""
Next
Range("g1").Resize(1, d2.Count) = d2.keys
Range("f2").Resize(d1.Count, 1) = Application.Transpose(d1.keys)
k = d.keys
t = d.items
ReDim arr1(1 To d1.Count, 1 To d2.Count)
arr2 = Range("f1").CurrentRegion
Stop
For n = 0 To UBound(k)
For x = 2 To UBound(arr2)
If InStr(k(n), arr2(x, 1)) Then
Debug.Print k(n)
Debug.Print arr2(x, 1)
y = x - 1
For z = 2 To UBound(arr2, 2)
If InStr(k(n), arr2(1, z)) Then
arr1(y, z - 1) = arr1(y, z - 1) + t(n)
End If
Next z
End If
Next x
Next n
Stop
Range("l2").Resize(UBound(arr1), UBound(arr1, 2)) = arr1
Set arr = Nothing
Set arr1 = Nothing
Set arr2 = Nothing
Set d = Nothing
Set d1 = Nothing
Set d2 = Nothing
Set k = Nothing
Set t = Nothing
End Sub
Sub 作业二()
Dim d, d1, f, g, h, i, j, x, y, z, arr2, arr1, arr, k, t
Set d = CreateObject("scripting.dictionary")
Set d1 = CreateObject("scripting.dictionary")
arr = Range("a2:d111")
For i = LBound(arr) To UBound(arr)
d(arr(i, 2) & Month(arr(i, 1)) & "月" & arr(i, 3)) = d(arr(i, 2) & Month(arr(i, 1)) & "月" & arr(i, 3)) + arr(i, 4)
d1(arr(i, 2)) = ""
Next
Range("f3").Resize(d1.Count) = Application.Transpose(d1.keys)
k = d.keys
t = d.items
arr2 = Range("f1:bc13")
ReDim arr1(1 To UBound(arr2), 1 To UBound(arr2, 2))
For x = 3 To UBound(arr2)
For y = 2 To 50 Step 4
For z = y To 50
If arr2(2, z) = "小计" Then
For f = 1 To 11
arr1(f, z - 1) = arr1(f, z - 2) + arr1(f, z - 3) + arr1(f, z - 4)
Next
GoTo 100
End If
For j = LBound(k) To UBound(k)
If InStr(k(j), arr2(x, 1) & arr2(1, y) & arr2(2, z)) Then
arr1(x - 2, z - 1) = arr1(x - 2, z - 1) + t(j)
End If
Next
Next
100:
Next
Next
For g = 1 To 11
For h = 4 To 48 Step 4
arr1(g, 49) = arr1(g, 49) + arr1(g, h)
Next
Next
Range("g3").Resize(UBound(arr1), UBound(arr1, 2)) = arr1
Set d = Nothing
Set d1 = Nothing
Set arr = Nothing
Set arr1 = Nothing
Set arr2 = Nothing
End Sub
Sub 作业二附加题()
Dim d, d1, f, g, h, i, j, x, y, z, arr2, arr1, arr, k, t, a, b, c, e, ar, ar1, rng
Set d = CreateObject("scripting.dictionary")
Set d1 = CreateObject("scripting.dictionary")
arr = Range("a2:d111")
ar = Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月")
ar1 = Array("草莓", "苹果", "葡萄", "小计")
b = 0
e = 7
For a = 7 To 52 Step 4
Cells(1, a) = ar(b)
b = b + 1
If Cells(1, a + 3) = "" Then
Range(Cells(1, a), Cells(1, a + 3)).Merge
Cells(1, a).HorizontalAlignment = Excel.xlCenter
End If
For c = LBound(ar1) To UBound(ar1)
Cells(2, e) = ar1(c)
e = e + 1
Next
Next
Cells(1, 6) = "省份"
Range(Cells(1, 6), Cells(2, 6)).Merge
Cells(1, 6).HorizontalAlignment = Excel.xlCenter
Cells(1, 55) = "合计"
Range(Cells(1, 55), Cells(2, 55)).Merge
Cells(1, 55).HorizontalAlignment = Excel.xlCenter
Range("f1:bc2").Interior.ColorIndex = 40
Range("f1:f13").Interior.ColorIndex = 40
For i = LBound(arr) To UBound(arr)
d(arr(i, 2) & Month(arr(i, 1)) & "月" & arr(i, 3)) = d(arr(i, 2) & Month(arr(i, 1)) & "月" & arr(i, 3)) + arr(i, 4)
d1(arr(i, 2)) = ""
Next
Range("f3").Resize(d1.Count) = Application.Transpose(d1.keys)
k = d.keys
t = d.items
arr2 = Range("f1:bc13")
ReDim arr1(1 To UBound(arr2), 1 To UBound(arr2, 2))
For x = 3 To UBound(arr2)
For y = 2 To 50 Step 4
For z = y To 50
If arr2(2, z) = "小计" Then
For f = 1 To 11
arr1(f, z - 1) = arr1(f, z - 2) + arr1(f, z - 3) + arr1(f, z - 4)
Next
GoTo 100
End If
For j = LBound(k) To UBound(k)
If InStr(k(j), arr2(x, 1) & arr2(1, y) & arr2(2, z)) Then
arr1(x - 2, z - 1) = arr1(x - 2, z - 1) + t(j)
End If
Next
Next
100:
Next
Next
For g = 1 To 11
Debug.Print arr1(g, 49)
For h = 4 To 48 Step 4
arr1(g, 49) = arr1(g, 49) + arr1(g, h)
Next
Next
Range("g3").Resize(UBound(arr1), UBound(arr1, 2)) = arr1
Range("f1:bc13").Borders.LineStyle = 1
Set d = Nothing
Set d1 = Nothing
Set ar = Nothing
Set ar1 = Nothing
Set arr = Nothing
Set arr1 = Nothing
Set arr2 = Nothing
End Sub |