|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
- Sub test()
- Dim r%, i%
- Dim arr, brr
- Dim d As Object
- Set d = CreateObject("scripting.dictionary")
- With Worksheets("总课表")
- r = .Cells(.Rows.Count, 2).End(xlUp).Row
- c = .Cells(5, .Columns.Count).End(xlToLeft).Column
- arr = .Range("a2").Resize(r - 1, c)
- End With
- For j = 3 To UBound(arr, 2)
- If Len(arr(1, j)) <> 0 Then
- xq = arr(1, j)
- End If
- For i = 5 To UBound(arr) Step 2
- xm = arr(i, 2) & "+" & xq
- If Len(arr(i + 1, j)) <> 0 Then
- If Not d.exists(xm) Then
- Set d(xm) = CreateObject("scripting.dictionary")
- End If
- d(xm)(arr(i + 1, j)) = Empty
- End If
- Next
- Next
- With Worksheets("备选人")
- r = .Cells(.Rows.Count, 9).End(xlUp).Row
- brr = .Range("i3:i" & r)
- r = .Cells(.Rows.Count, 2).End(xlUp).Row
- .Range("c3:g" & r).ClearContents
- arr = .Range("b2:g" & r)
- For i = 2 To UBound(arr)
- kj = "第" & Application.Text(Val(Mid(arr(i, 1), 2)), "[DBNum1]") & "节"
- For j = 2 To UBound(arr, 2)
- xm = kj & "+" & arr(1, j)
- If d.exists(xm) Then
- For k = 1 To UBound(brr)
- If Not d(xm).exists(brr(k, 1)) Then
- arr(i, j) = arr(i, j) & "," & brr(k, 1)
- End If
- Next
- End If
- Next
- Next
- For i = 2 To UBound(arr)
- For j = 2 To UBound(arr, 2)
- If Len(arr(i, j)) <> 0 Then
- arr(i, j) = Mid(arr(i, j), 2)
- End If
- Next
- Next
- .Range("b2").Resize(UBound(arr), UBound(arr, 2)) = arr
- End With
- End Sub
复制代码 |
|