|
请编写代码:
表1中1、2、3行放在一起都为空格的列是第1、2、7、9两列,非空格的列是3、4、5、6、8、10、11,表2中各行与非空格数字相比较,如果非空格数字有7个,表2各行数字有3~5个包含在这7个数字中就保留此行,并放到表3中,其它的行被删除; 如果非空格数字有6个,表2各行数字有2~4个包含在这6个数字中就保留此行,并放到表3中,其它的行被删除,比如表1:2、3、4三行在一起有6个非空格,数字是3、5、6、8、9、10;
如果非空格数字有5个,表2各行数字有1~3个包含在这5个数字中就保留此行,并放到表3中,其它的行被删除,比如表1:3、4、5三行在一起有5个非空格,数字是3、5、6、7、9;
表3是筛选结果。
谢谢!
代码请测试 - Private Sub CommandButton1_Click()
- Dim arr, i&, j&, d As Object, d1 As Object, max&, min&, m&, r&, c
- Set d = CreateObject("scripting.dictionary")
- Set d1 = CreateObject("scripting.dictionary")
- arr = [a2:k4]
- For Each c In arr
- If c <> "" Then d(c) = ""
- Next c
- If d.Count < 5 Then MsgBox "<5": Exit Sub
- arr = [m2:w6]
- min = d.Count - 4: max = d.Count - 2
- For i = 1 To 5
- For j = 1 To 11
- If d.exists(arr(i, j)) Then m = m + 1
- Next j
- If m >= min And m <= max Then
- r = r + 1
- d1(r) = Application.Index(arr, i, 0)
- End If
- m = 0
- Next i
- [y2].Resize(r, 11) = Application.Transpose(Application.Transpose(d1.items))
- End Sub
复制代码
|
|