|
Sub 雄鹰()
Dim a, b, c, d
Dim arr, brr, crr
Set dic = CreateObject("scripting.dictionary")
On Error Resume Next
Range("I19:T65536").ClearContents
[g6] = [g1] - 1 '最后一行预测用
a = [g1] '倒数统计多少行
b = [g3] '每行至少有几个数字相同
c = [g6] '连续相同的行数的次数
d = [g9] '上下间隔行数
r = Cells(Rows.Count, 1).End(xlUp).Row '最后一行行号
rr = r - a + 1 '倒数区域的起始行
arr = Range("a" & rr & ":e" & r)
brr = Range("a11:e" & rr - 1)
ReDim crr(1 To UBound(arr), 1 To 5)
For i = 1 To UBound(arr) - 1
Set dic(i) = CreateObject("scripting.dictionary") '将每行设一个字典
For j = 3 To 5
dic(i)(arr(i, j)) = "" '将每行中的数据放入字典中
Next j
Next i
i = 1
For i = i To UBound(brr)
x = 1: s = 1: y = i
Do While x < a
n = 0 '判断同行相同数据个数
For j = 3 To 5
If dic(x).exists(brr(i, j)) Then n = n + 1 '如果某行中有brr中的数据就累加
crr(s, 1) = brr(i, 1)
crr(s, 2) = brr(i, 2)
crr(s, j) = brr(i, j)
Next j
If n < b Then x = 1: s = 1: ReDim crr(1 To UBound(arr), 1 To 5): Exit Do
x = x + 1: i = i + d: s = s + 1
Loop
For j = 1 To 5
crr(s, j) = brr(i, j)
Next j
If x = a And crr(s, 1) <> "" Then
Range("i65536").End(xlUp).Offset(2).Resize(UBound(crr), 5) = crr
Range("p65536").End(xlUp).Offset(2).Resize(UBound(arr), 5) = arr
End If
i = y
Next i
End Sub
|
评分
-
查看全部评分
|