tanthanh94
Thành viên mới

- Tham gia
- 24/8/14
- Bài viết
- 46
- Được thích
- 3



Code cùi:mình muốn cập nhật dữ liệu từ sheet1 sang sheet2 theo điệu kiện như sau
chỉ cập nhật thêm những code mới sang cột A sheet 2 (không cập nhật những code đã có)
và cho số lượng vào cột F của sheet2
Các anh xem file đính kèm.
mình muốn cập nhật dữ liệu từ sheet1 sang sheet2 theo điệu kiện như sau
chỉ cập nhật thêm những code mới sang cột A sheet 2 (không cập nhật những code đã có)
và cho số lượng vào cột F của sheet2
Các anh xem file đính kèm.
Sub tonghop()
Dim sM, sH As Variant, kq(), i, j, k, tong As Long, d As Object
sM = Sheet1.[a4].Resize(Sheet1.[a1000].End(3).Row - 3, 2).Value
sH = Sheet2.[a5].Resize(Sheet2.[a1000].End(3).Row - 4, 5).Value
Set d = CreateObject("Scripting.Dictionary")
ReDim kq(1 To UBound(sM) + UBound(sH), 1 To 6)
For i = 1 To UBound(sH)
If Not d.exists(sH(i, 1)) Then
k = k + 1
d.Add sH(i, 1), k
For j = 1 To 5
kq(k, j) = sH(i, j)
Next
End If
Next
For i = 1 To UBound(sM)
If Not d.exists(sM(i, 1)) Then
k = k + 1
d.Add sM(i, 1), k
kq(k, 1) = sM(i, 1)
kq(k, 6) = sM(i, 2)
Else
kq(d.Item(sM(i, 1)), 6) = sM(i, 2)
End If
Next
[j5:o10000].ClearContents
[j5].Resize(k, 6).Value = kq
Set d = Nothing
End Sub

Em thử test codeké một đoạn code
Mã:Sub tonghop() Dim sM, sH As Variant, kq(), i, j, k, tong As Long, d As Object sM = Sheet1.[a4].Resize(Sheet1.[a1000].End(3).Row - 3, 2).Value sH = Sheet2.[a5].Resize(Sheet2.[a1000].End(3).Row - 4, 5).Value Set d = CreateObject("Scripting.Dictionary") ReDim kq(1 To UBound(sM) + UBound(sH), 1 To 6) For i = 1 To UBound(sH) If Not d.exists(sH(i, 1)) Then k = k + 1 d.Add sH(i, 1), k For j = 1 To 5 kq(k, j) = sH(i, j) Next End If Next For i = 1 To UBound(sM) If Not d.exists(sM(i, 1)) Then k = k + 1 d.Add sM(i, 1), k kq(k, 1) = sM(i, 1) kq(k, 6) = sM(i, 2) Else kq(d.Item(sM(i, 1)), 6) = sM(i, 2) End If Next [j5:o10000].ClearContents [j5].Resize(k, 6).Value = kq Set d = Nothing End Sub
sM = Sheet1.[a4].Resize(Sheet1.[a1000].End(3).Row - 3, 2).Value
sH = Sheet2.[a5].Resize(Sheet2.[a1000].End(3).Row - 4, 5).Value
With Sheet1
sM = Range("A4", [A65000].End(3)).Resize(, 2).Value
End With
With Sheet2
sH = Range("A5", [A65000].End(3)).Resize(, 5).Value
End With

mình muốn cập nhật dữ liệu từ sheet1 sang sheet2 theo điệu kiện như sau
chỉ cập nhật thêm những code mới sang cột A sheet 2 (không cập nhật những code đã có)
và cho số lượng vào cột F của sheet2
Các anh xem file đính kèm.
Sub Ghep()
Dim Rng As Range, Rng1 As Range, i As Long, cll As Range, Kq As Range
Set Rng = Sheet1.Range("A4", Sheet1.[A65000].End(xlUp))
Set Rng1 = Sheet2.Range("A5", Sheet2.[A65000].End(xlUp))
For Each cll In Rng
If Application.IsNA(Application.Match(cll, Rng1, 0)) Then
Sheet2.[A65000].End(xlUp).Offset(1, 0) = cll
End If
Next
For i = 5 To Rng.Rows.Count * 4
Set Kq = Sheet1.[A:A].Find(Sheet2.Cells(i, 1), , , xlWhole)
If Not Kq Is Nothing Then
Cells(i, 6) = Kq.Offset(, 1)
End If
Next
Set Rng = Nothing
Set Rng1 = Nothing
Set Kq = Nothing
End Sub

Em thử test code
thành đoạn code sauMã:sM = Sheet1.[a4].Resize(Sheet1.[a1000].End(3).Row - 3, 2).Value sH = Sheet2.[a5].Resize(Sheet2.[a1000].End(3).Row - 4, 5).Value
Nhưng kết quả không như ý muốnMã:With Sheet1 sM = Range("A4", [A65000].End(3)).Resize(, 2).Value End With With Sheet2 sH = Range("A5", [A65000].End(3)).Resize(, 5).Value End With
Không biết sai chỗ nào,anh chỉ giúp
Rất cám ơn bài viết của anh.
With Sheet1
sM = .Range("A4", .[A65000].End(3)).Resize(, 2).Value
End With

như vậy chạy đượcBạn sửa thế này xem saoPHP:With Sheet1 sM = .Range("A4", .[A65000].End(3)).Resize(, 2).Value End With
Em thử test code
thành đoạn code sauMã:sM = Sheet1.[a4].Resize(Sheet1.[a1000].End(3).Row - 3, 2).Value sH = Sheet2.[a5].Resize(Sheet2.[a1000].End(3).Row - 4, 5).Value
Nhưng kết quả không như ý muốnMã:With Sheet1 sM = Range("A4", [A65000].End(3)).Resize(, 2).Value End With With Sheet2 sH = Range("A5", [A65000].End(3)).Resize(, 5).Value End With
Không biết sai chỗ nào,anh chỉ giúp
Rất cám ơn bài viết của anh.

Qúa hay luôn anh ơiXem thử File này.
Ở sheet2 sẽ ghi dữ liệu vào cột cuối cùng có tiêu đề trên dòng 4 chứ không cố định là cột F