|
sheet2中已有的日期、型号和类型与sheet1相同时,存量已sheet1的为准;
sheet2中不存在sheet1的日期、型号和类型的添加到sheet2空白row+1添加
用公式可以组&组合日期型号和类型三个,但转换VBA我就不懂了
- Option Explicit
- Sub Modify_sheet2() 'sheet2中已有的日期、型号和类型与sheet1相同时,存量已sheet1的为准
- Dim arr, arr2
- Dim dic
- Dim i, j As Integer
- Set dic = CreateObject("scripting.dictionary")
- arr = Sheet1.Range("a1:d" & Sheet1.[a100000].End(xlUp).Row)
- arr2 = Sheet2.Range("a1:d" & Sheet2.[a100000].End(xlUp).Row)
- Sheet2.Range("d2:d1000").ClearContents
- For i = 2 To UBound(arr)
- dic(arr(i, 1) & arr(i, 2) & arr(i, 3)) = arr(i, 4)
- Next
- For j = 2 To UBound(arr2)
- If dic.Exists(arr2(j, 1) & arr2(j, 2) & arr2(j, 3)) Then
- arr2(j, 4) = dic(arr2(j, 1) & arr2(j, 2) & arr2(j, 3))
- End If
- Next
- Sheet2.Range("d1").Resize(UBound(arr2), 1) = Application.Index(arr2, , 4)
- End Sub
- Sub add_sheet1() 'sheet2中不存在sheet1的日期、型号和类型的添加到sheet2空白row+1添加
- Dim arr, arr2
- Dim arr3(1 To 1000, 1 To 4)
- Dim dic
- Dim i, j, k As Integer
- k = 0
- Set dic = CreateObject("scripting.dictionary")
- arr = Sheet1.Range("a1:d" & Sheet1.[a100000].End(xlUp).Row)
- arr2 = Sheet2.Range("a1:d" & Sheet2.[a100000].End(xlUp).Row)
- For i = 2 To UBound(arr2)
- dic(arr2(i, 1) & arr2(i, 2) & arr2(i, 3)) = arr2(i, 4)
- Next
- For j = 2 To UBound(arr)
- If Not dic.Exists(arr(j, 1) & arr(j, 2) & arr(j, 3)) Then
- k = k + 1
- arr3(k, 1) = arr(j, 1)
- arr3(k, 2) = arr(j, 2)
- arr3(k, 3) = arr(j, 3)
- arr3(k, 4) = arr(j, 4)
- End If
- Next
- Sheet2.Range("a10000").End(xlUp).Offset(1, 0).Resize(k, 4) = arr3
- End Sub
复制代码
|
|