|
研究学委辛苦了!{:1612:}
【字典2.004】windimi007前来交作业,期待研究学委的点评!{:3112:}
必做一:
- Function Jc(rg As Range, Optional k As Long = 1)
- Dim d As Object
- Dim arr
- Dim x, y
- Dim i%, j%
- Dim sr$
- Set d = CreateObject("scripting.dictionary")
- arr = rg
- For i = 1 To UBound(arr)
- For j = 1 To UBound(arr, 2)
- d(arr(i, j)) = d(arr(i, j)) + 1
- Next j
- Next i
- x = d.keys
- y = d.items
- For i = 0 To d.Count - 1
- If y(i) = k Then sr = sr & x(i) & "|"
- Next i
- Jc = Left(sr, Len(sr) - 1)
- End Function
复制代码
必做二:
- Sub aa()
- Dim d As Object
- Dim sh As Worksheet
- Dim arr
- Dim i&
- Set d = CreateObject("scripting.dictionary")
- For Each sh In Worksheets
- If sh.Tab.ColorIndex = Sheets("必做二").Tab.ColorIndex And sh.Name <> "必做二" Then
- arr = sh.Range("A1").CurrentRegion
- For i = 2 To UBound(arr)
- d(arr(i, 1)) = d(arr(i, 1)) + Val(arr(i, 2))
- Next i
- Erase arr
- End If
- Next sh
- Sheets("必做二").[A1:B1] = [{"产品型号","数量"}]
- Sheets("必做二").[A2].Resize(d.Count) = WorksheetFunction.Transpose(d.keys)
- Sheets("必做二").[B2].Resize(d.Count) = WorksheetFunction.Transpose(d.items)
- End Sub
复制代码
选做一:
- Private Sub Worksheet_Change(ByVal Target As Range)
- Dim d As Object
- Dim arr1, arr2
- Dim i&
- If Target.Address(0, 0) = "E1" Then
- Set d = CreateObject("scripting.dictionary")
- arr1 = Range("A2:A" & Cells(Rows.Count, 1).End(3).Row)
- arr2 = Range("B2:B" & Cells(Rows.Count, 2).End(3).Row).Formula
- For i = 1 To UBound(arr1)
- d(arr1(i, 1)) = d(arr1(i, 1)) & Right(arr2(i, 1), Len(arr2(i, 1)) - 1) & "+"
- Next i
- x = Split(d([E1].Value), "+")
- If Not IsEmpty([E2]) Then Range("E2:E" & Cells(Rows.Count, 5).End(3).Row).ClearContents
- Range("E2").Resize(UBound(x)) = WorksheetFunction.Transpose(x)
- End If
- End Sub
复制代码
选做二:
- Sub 按钮3_Click()
- Dim d As Object
- Dim arr
- Dim brr(1 To 10, 1 To 7)
- Dim x
- Dim i&
- Set d = CreateObject("scripting.dictionary")
- arr = Sheets("选做二数据源").Range("A1").CurrentRegion
- Do
- d(Int(Rnd() * UBound(arr) + 1)) = ""
- Loop Until d.Count = 10
- x = d.keys
- For i = 1 To 10
- brr(i, 1) = WorksheetFunction.Index(arr, x(i - 1), 1)
- brr(i, 2) = WorksheetFunction.Index(arr, x(i - 1), 2)
- brr(i, 3) = WorksheetFunction.Index(arr, x(i - 1), 3)
- brr(i, 4) = WorksheetFunction.Index(arr, x(i - 1), 4)
- brr(i, 5) = WorksheetFunction.Index(arr, x(i - 1), 5)
- brr(i, 6) = WorksheetFunction.Index(arr, x(i - 1), 6)
- brr(i, 7) = WorksheetFunction.Index(arr, x(i - 1), 7)
- Next i
- Range("A1").Resize(10, 7) = brr
- End Sub
复制代码
附加题:
- Sub 矩形1_Click()
- Dim d As Object, dic As Object
- Dim x
- Dim arr
- Dim brr()
- Dim sh As Worksheet
- Dim i&, j&, k&, l&
- Dim mg$
- Application.ScreenUpdating = False
- Set d = CreateObject("scripting.dictionary")
- Set dic = CreateObject("scripting.dictionary")
- arr = Range("A1").CurrentRegion
- For i = 2 To UBound(arr)
- d(arr(i, 14)) = ""
- Next i
- For Each sh In Worksheets
- dic(sh.Name) = ""
- Next sh
- x = d.keys
- For i = 1 To d.Count
- If dic.exists(x(i - 1)) Then
- mg = MsgBox("工作表已存在,是否删除?", vbYesNo + vbExclamation, "提示")
- If mg = vbYes Then
- Application.DisplayAlerts = False
- Sheets(x(i - 1)).Delete
- Application.DisplayAlerts = True
- Else
- GoTo 7
- End If
- End If
- Sheets.Add(, Sheets(Sheets.Count)).Name = x(i - 1)
- For j = 1 To UBound(arr)
- If arr(j, 14) = x(i - 1) Then
- k = k + 1
- ReDim Preserve brr(1 To UBound(arr, 2) - 1, 1 To k)
- For l = 1 To UBound(arr, 2) - 1
- brr(l, k) = arr(j, l + 1)
- Next l
- End If
- Next j
- Range("A1").Resize(, UBound(brr) + 1) = [{"序号","工作单号","受理时间","发货方式","品名","数量","计费重量","到达地","委托人","服务费","保险费","包装费","应收合计","委托单位","客户编号","应收到付","应收代收","重要提示","收货人"}]
- Range("B2").Resize(UBound(brr, 2), UBound(brr)) = WorksheetFunction.Transpose(brr)
- Erase brr
- k = 0
- 7:
- Next i
- Application.ScreenUpdating = True
- End Sub
复制代码
|
|