|
本帖最后由 斜阳几度 于 2017-6-19 14:57 编辑
感激论坛高手的无私帮助!!斜阳几度再次深深谢过!!!
以下说明,另见附件!
说明:
所有数据都是0到9的个位数。A列数据10万个,B列数据6个。
判断B1:B6单元格(6个单元格)是否与A1:A6单元格(6个单元格)值完全相等,如不等,则判断B1:B6是否与A2:A7单元格数据完全相等,依次判断(相当于函数里面的下拉),如B1:B6单元格与A1:A6单元格相等,则将A7单元格返回到E1中(第二条信息返回E2…依次排列),同时将A17的行数值返回到D1(第二条信息返回到D2…依次排列),同时将循环的次数返回到C1(因为要进行几次循环,所以要分清楚是第几次循环采集到的数据)。这样一条信息采集完成,逐行比对,依次采集所有信息。
完成后,再判断B2:B6单元格(5个单元格)是否与A1:A5单元格(5个单元格)值完全相等,如不等,则判断B2:B6是否与A2:A6单元格数据完全相等,依次判断,如B2:B6单元格与A1:A5单元格相等,则将A6单元格值返回到E列中,同时将A6的行数值返回到D列,同时将循环的次数返回到C列。如有与已采集数据行数重复,则不再采集,这样依次采集所有信息。
完成后,再判断B3:B6单元格(4个单元格)是否与A1:A4单元格(4个单元格)值完全相等,如不等,则判断B3:B6是否与A2:A5单元格数据完全相等,依次判断,如B3:B6单元格与A1:A4单元格相等,则将A5单元格返回到E列中,同时将A5的行数值返回到D列,同时将循环的次数返回到C列。如有与已采集数据行数重复,则不再采集,这样依次采集所有信息。
以上三次循环,采集后退出程序!
本表版本为 excel 2013 由于数据关系,无法使用2003版。
斜阳几度在此谢过!!!
- Sub shujuchuli()
- Dim n As Long, m As Long, arr, brr, i%, j%, k%, r%, crr(1 To 100000, 1 To 3), s As Boolean
- Columns("c:e").ClearContents
- arr = Range("a1:a100000")
- brr = Range("b1:b6")
- m = 1
- For i = 1 To 3
- For n = 1 To 100000 - 6 + i - 1
- r = 0
- For j = i To 6
- If brr(j, 1) <> arr(j + n - i, 1) Then Exit For
- r = r + 1
- Next
- If r = 6 - i + 1 Then
- If m > 1 Then
- For k = 1 To m
- If crr(k, 2) = 7 + n - i Then
- s = True
- Exit For
- End If
- Next
- If Not s Then
- crr(m, 1) = i
- crr(m, 2) = 7 + n - i
- crr(m, 3) = arr(7 + n - i, 1)
- m = m + 1
- End If
- s = False
- Else
- crr(m, 1) = i
- crr(m, 2) = 7 + n - i
- crr(m, 3) = arr(7 + n - i, 1)
- m = m + 1
- End If
- End If
- Next
- Next
- Range("c1").Resize(m, 3) = crr
- End Sub
复制代码
|
|