Xin code VBA Trích lọc dữ liệu theo điều kiện.

Liên hệ QC

dinhquang042000

Thành viên chính thức
Tham gia
16/12/15
Bài viết
76
Được thích
4
Kính gửi các Anh/Chị,

Em đang lập một file trích xuất dữ liệu theo điều kiện với nội dung.
Em muốn trích lọc các giá trị bên sheet TB2 sang sheet TONG HOP với điều kiện:
Các giá trị trích lọc bên TB2 này thỏa mãn điều kiện: Số cont và Ngày nhập bãi trùng với giá trị Số Cont và Ngày nhập bãi bên Sheet TB1.
Mong nhận được sự chỉ giáo của các anh chị. Em xin chân thành cảm ơn.
 

File đính kèm

Mình tìm trong TB2 không có số Cont nào trùng với số Cont của TB1 cả mà bạn cho VD rõ hơn đc không?
 
Upvote 0
Dạ do em sơ suất lọc trùng để cắt lại dữ liệu cho file đủ dung lượng đăng bài nên không có giá trị trùng.
Em cảm ơn sự trợ giúp của các anh ạ. :D:D
 
Upvote 0
Gửi các Anh chị,

Em muốn tổng hợp dữ liệu từ 2 sheet N1 và C1 sang sheet CN1 với điều kiện
nếu ở N1 và C1 có giá trị trùng nhau ở tất cả các cột (A tới J) thì chỉ tổng hợp 1 lần sang sheet CN1.
Mong nhận được sự chỉ giáo của các anh chị. Em xin chân thành cảm ơn.
 

File đính kèm

Upvote 0
Gửi các Anh chị,

Em muốn tổng hợp dữ liệu từ 2 sheet N1 và C1 sang sheet CN1 với điều kiện
nếu ở N1 và C1 có giá trị trùng nhau ở tất cả các cột (A tới J) thì chỉ tổng hợp 1 lần sang sheet CN1.
Mong nhận được sự chỉ giáo của các anh chị. Em xin chân thành cảm ơn.
đây bạn xem nhé
 

File đính kèm

Upvote 0
Dạ em vừa xem thử file, File anh gửi là lấy giá trị từ 1 sheet, nếu có giá trí trùng thì coppy giá trị đầu tiền qua sheet bên cạnh.
File của em là em muốn gộp dữ liệu từ 2 sheet, nếu có giá trị trùng ở 2 sheet thì chỉ lấy 1 lần cho vào bên sheet tổng hợp
Mong anh chỉ giaó thêm ạ.
 
Upvote 0
Dạ em vừa xem thử file, File anh gửi là lấy giá trị từ 1 sheet, nếu có giá trí trùng thì coppy giá trị đầu tiền qua sheet bên cạnh.
File của em là em muốn gộp dữ liệu từ 2 sheet, nếu có giá trị trùng ở 2 sheet thì chỉ lấy 1 lần cho vào bên sheet tổng hợp
Mong anh chỉ giaó thêm ạ.
đúng mà bạn bạn xem lại xem nào cái này mình làm là gộp 2 sheets lại với nhau nếu có giá trị trùng thì lấy 1 giá trị đúng không hay là thế nào nhỉ
cái sheets bên cạnh là mình copy tay sang để test dữ liệu mà sheets tổng hợp được copy sang bên tổng hợp đấy
 

File đính kèm

Upvote 0
Dạ em vừa xem thử file, File anh gửi là lấy giá trị từ 1 sheet, nếu có giá trí trùng thì coppy giá trị đầu tiền qua sheet bên cạnh.
File của em là em muốn gộp dữ liệu từ 2 sheet, nếu có giá trị trùng ở 2 sheet thì chỉ lấy 1 lần cho vào bên sheet tổng hợp
Mong anh chỉ giaó thêm ạ.
ý bạn nói là nếu trùng thì chỉ lấy cái trùng ra hay là lấy như nào chả hiểu
 
Upvote 0
ý bạn nói là nếu trùng thì chỉ lấy cái trùng ra hay là lấy như nào chả hiểu
Dạ Nếu C1 vs N1 có trùng nhau thì giá trị trùng ấy chỉ lấy từ C1 hoặc N1 coppy sang NC1, Còn các giá trị không trùng ở cả C1 và N1 thì coppy hết qua NC1 ạ.
Mong các anh chỉ giáo thêm cho e ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ Nếu C1 vs N1 có trùng nhau thì giá trị trùng ấy chỉ lấy từ C1 hoặc N1 coppy sang N11, Còn các giá trị không trùng ở cả C1 và N1 thì coppy hết qua N11 ạ.
Mong các anh chỉ giáo thêm cho e ạ
Bạn muốn tạo thêm 1 Sheet mới N11 đúng ko?
 
Upvote 0
Dạ Nếu C1 vs N1 có trùng nhau thì giá trị trùng ấy chỉ lấy từ C1 hoặc N1 coppy sang N11, Còn các giá trị không trùng ở cả C1 và N1 thì coppy hết qua N11 ạ.
Mong các anh chỉ giáo thêm cho e ạ
đây bạn xem lại nhé lúc nãy chắc nhầm mình nghĩ 2 file này chắc file 2 đúng ý của bạn à
 

File đính kèm

Upvote 0
đây bạn xem lại nhé lúc nãy chắc nhầm mình nghĩ 2 file này chắc file 2 đúng ý của bạn à
Đẩu tiên em xin cảm ơn sự trợ giúp của anh. File TONG HOP (25,8kb) code lọc đúng với lại mong muốn của em ạ.
Nhưng khi số lượng dữ liệu ở số 2 SHEET C1, N1 của e rất nhiều. khi e đổi code VD:
arr = Sheet1.Range("a2:j1000").Value
arr1 = Sheet2.Range("a2:j1000").Value
Thì ở sheet N11, các giá trị coppy từ N1 qua NC1 bắt đầu từ ô 1001 chứ không phải từ ô sau ô cuối cùng dữ liệu coppy từ C1 qua.
Mong anh chỉ giáo giúp e chỉnh sửa chỗ này với ạ
 
Upvote 0
Đẩu tiên em xin cảm ơn sự trợ giúp của anh. File TONG HOP (25,8kb) code lọc đúng với lại mong muốn của em ạ.
Nhưng khi số lượng dữ liệu ở số 2 SHEET C1, N1 của e rất nhiều. khi e đổi code VD:
arr = Sheet1.Range("a2:j1000").Value
arr1 = Sheet2.Range("a2:j1000").Value
Thì ở sheet N11, các giá trị coppy từ N1 qua NC1 bắt đầu từ ô 1001 chứ không phải từ ô sau ô cuối cùng dữ liệu coppy từ C1 qua.
Mong anh chỉ giáo giúp e chỉnh sửa chỗ này với ạ
khó hiểu thế nhỉ 2 dữ liệu liên tiếp mà ko hiểu chỗ này lắm bạn có thể gửi file mẫu lên ví dụ chỗ nào ko đúng mình sửa lại
 
Upvote 0
khó hiểu thế nhỉ 2 dữ liệu liên tiếp mà ko hiểu chỗ này lắm bạn có thể gửi file mẫu lên ví dụ chỗ nào ko đúng mình sửa lại
Dạ như file e đính kèm. khi em tăng dữ liệu lên và điều chỉnh đoạn code:
arr = Sheet1.Range("a2:j100").Value
arr1 = Sheet2.Range("a2:j100").Value
để lấy hết dữ liệu tư 2 sheet C1 và N1. thì ở sheet tổng hợp NC1 dữ liệu ở ô N1 coppy sang NC1 bắt đầu từ dòng 101. nên tạo khoảng trống giữa dòng 52 và dòng 101. em muốn xin anh chỉnh lại code để dữ liệu từ N1 coppy qua NC1 bắt đầu luôn từ dòng 53 (sau dòng cuối cùng coppy từ C1 qua)
Mong anh giúp đỡ thêm ạ
 

File đính kèm

Upvote 0
Dạ như file e đính kèm. khi em tăng dữ liệu lên và điều chỉnh đoạn code:
arr = Sheet1.Range("a2:j100").Value
arr1 = Sheet2.Range("a2:j100").Value
để lấy hết dữ liệu tư 2 sheet C1 và N1. thì ở sheet tổng hợp NC1 dữ liệu ở ô N1 coppy sang NC1 bắt đầu từ dòng 101. nên tạo khoảng trống giữa dòng 52 và dòng 101. em muốn xin anh chỉnh lại code để dữ liệu từ N1 coppy qua NC1 bắt đầu luôn từ dòng 53 (sau dòng cuối cùng coppy từ C1 qua)
Mong anh giúp đỡ thêm ạ
bạn thay code này nhé dữ liệu tự cập nhập
Mã:
Sub tonghop()
Dim arr, arr1
Dim a As Long, i As Long, j As Long
Dim dic As Object
Dim dk As String
Set dic = CreateObject("scripting.dictionary")
arr = Sheet1.Range("a2:j" & Sheet1.Range("A" & Rows.Count).End(xlUp).Row).Value
arr1 = Sheet2.Range("a2:j" & Sheet2.Range("A" & Rows.Count).End(xlUp).Row).Value
ReDim arr2(1 To UBound(arr, 1) + UBound(arr1, 1), 1 To 10)
For i = 1 To UBound(arr, 1)
    dk = Empty
    For j = 1 To 10
        dk = dk & " # " & arr(i, j)
    Next j
       dic.Item(dk) = "KK"
       a = a + 1
       For j = 1 To 10
            arr2(a, j) = arr(i, j)
       Next j
Next i
For i = 1 To UBound(arr1, 1)
    dk = Empty
    For j = 1 To 10
        dk = dk & " # " & arr1(i, j)
    Next j
    If dic.exists(dk) = 0 Then
          a = a + 1
          For j = 1 To 10
               arr2(a, j) = arr1(i, j)
          Next j
    End If
Next i
Sheet3.Range("a2:j" & Rows.Count).ClearContents
Sheet3.Range("a2").Resize(a, 10).Value = arr2
End Sub
 
Upvote 0
bạn thay code này nhé dữ liệu tự cập nhập
Mã:
Sub tonghop()
Dim arr, arr1
Dim a As Long, i As Long, j As Long
Dim dic As Object
Dim dk As String
Set dic = CreateObject("scripting.dictionary")
arr = Sheet1.Range("a2:j" & Sheet1.Range("A" & Rows.Count).End(xlUp).Row).Value
arr1 = Sheet2.Range("a2:j" & Sheet2.Range("A" & Rows.Count).End(xlUp).Row).Value
ReDim arr2(1 To UBound(arr, 1) + UBound(arr1, 1), 1 To 10)
For i = 1 To UBound(arr, 1)
    dk = Empty
    For j = 1 To 10
        dk = dk & " # " & arr(i, j)
    Next j
       dic.Item(dk) = "KK"
       a = a + 1
       For j = 1 To 10
            arr2(a, j) = arr(i, j)
       Next j
Next i
For i = 1 To UBound(arr1, 1)
    dk = Empty
    For j = 1 To 10
        dk = dk & " # " & arr1(i, j)
    Next j
    If dic.exists(dk) = 0 Then
          a = a + 1
          For j = 1 To 10
               arr2(a, j) = arr1(i, j)
          Next j
    End If
Next i
Sheet3.Range("a2:j" & Rows.Count).ClearContents
Sheet3.Range("a2").Resize(a, 10).Value = arr2
End Sub


Dạ code này chạy ok lắm ạ, Em cảm ơn anh nhiều ạ.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom