|
发表于 2014-6-2 15:08
|
显示全部楼层
本楼为最佳答案
不好意思,这个条件给忘记了,代码修改如下:- Private Sub CommandButton1_Click()
- Dim arr, brr, crr
- Dim iRow As Integer, i As Integer, j As Integer, k As Integer
- Dim d As Object
- Dim cobQty As Integer
- Dim myStr As String, myStr1 As String
- t = Timer
- cobQty = Val(ComboBox1.Text)
- Set d = CreateObject("scripting.dictionary")
- iRow = Range("B65536").End(3).Row
- arr = Range("B4:F" & iRow)
- ReDim brr(1 To UBound(arr), 1 To 6) As String
- crr = myArray()
- For i = 1 To 6
- For j = UBound(arr) To 1 Step -1
- For k = j To 1 Step -1
- myStr = arr(k, crr(i)(0)) & arr(k, crr(i)(1))
- myStr1 = arr(k, crr(i)(1)) & arr(k, crr(i)(0))
- If Not d.exists(myStr1) Then d(myStr) = ""
- If d.Count = cobQty Then Exit For
- Next
- brr(j, i) = Join(d.keys, " ")
- d.RemoveAll
- Next
- Cells(4, 16 + (i - 1) * 13).Resize(UBound(brr)).ClearContents
- Cells(4, 16 + (i - 1) * 13).Resize(UBound(brr)) = Application.Index(brr, , i)
- Next
- MsgBox "提取结束,用时:" & Format(Timer - t, "0.0000") & "秒"
- End Sub
- Function myArray() As Variant
- Dim cr(1 To 6)
- Dim ar1(1), ar2(1), ar3(1), ar4(1), ar5(1), ar6(1)
- ar1(0) = 1: ar1(1) = 2
- ar2(0) = 1: ar2(1) = 3
- ar3(0) = 2: ar3(1) = 3
- ar4(0) = 3: ar4(1) = 4
- ar5(0) = 3: ar5(1) = 5
- ar6(0) = 4: ar6(1) = 5
- cr(1) = ar1
- cr(2) = ar2
- cr(3) = ar3
- cr(4) = ar4
- cr(5) = ar5
- cr(6) = ar6
- myArray = cr
- End Function
复制代码 |
评分
-
查看全部评分
|