|
Sub test()
Dim arr, brr(1 To 10000, 1 To 7), ds1, ds2, x, m
Set ds1 = CreateObject("Scripting.Dictionary")
Set ds2 = CreateObject("Scripting.Dictionary")
arr = Sheet1.[A1].CurrentRegion
For m = 2 To UBound(arr) '段落1信息装入字典ds1。起点、终点为关键字,其中起点的属性值为空,属性A1和A2赋值给终点
ds1(arr(m, 1)) = "|" & "|"
ds1(arr(m, 2)) = arr(m, 3) & "|" & arr(m, 4)
Next
arr = Sheet2.[A1].CurrentRegion
For m = 2 To UBound(arr) '段落2信息装入字典ds2,终点为关键字,属性B1、B2、B3为值
ds2(arr(m, 2)) = arr(m, 3) & "|" & arr(m, 4) & "|" & arr(m, 5)
Next
x = 0
m = 0
While ds1.Count > 0 And ds2.Count > 0
k1 = ds1.keys()(0)
k2 = ds2.keys()(0)
sp1 = Split(ds1(k1), "|")
sp2 = Split(ds2(k2), "|")
m = m + 1
brr(m, 1) = x
brr(m, 3) = sp1(0)
brr(m, 4) = sp1(1)
brr(m, 5) = sp2(0)
brr(m, 6) = sp2(1)
brr(m, 7) = sp2(2)
If k1 < k2 Then
x = k1
ds1.Remove x
End If
If k2 < k1 Then
x = k2
ds2.Remove x
End If
If k1 = k2 Then
x = k1
ds1.Remove x
ds2.Remove x
End If
brr(m, 2) = x
Wend
While ds1.Count > 0
k1 = ds1.keys()(0)
sp1 = Split(ds1(k1), "|")
m = m + 1
x = k1
brr(m, 1) = x
brr(m, 3) = sp1(0)
brr(m, 4) = sp1(1)
ds1.Remove x
Wend
While ds2.Count > 0
k2 = ds2.keys()(0)
sp2 = Split(ds2(k2), "|")
m = m + 1
x = k2
brr(m, 1) = x
brr(m, 5) = sp2(0)
brr(m, 6) = sp2(1)
brr(m, 7) = sp2(1)
ds1.Remove x
Wend
Sheet4.[A2].Resize(m, 7) = brr
Sheet4.Select
End Sub
|
评分
-
3
查看全部评分
-
|