Nhờ anh chị viết code giúp em, lấy giá trị không trùng ra sheet khác

Liên hệ QC

sonchuot90

Thành viên mới
Tham gia
16/4/22
Bài viết
42
Được thích
6
Em có dữ liệu cột A sheet1, và cột L sheet2, bây giờ em sẽ tìm các giá trị cột A so với cột L, nếu các giá trị cột A không trùng với cột L thì sẽ trả kết quả không trùng sang cột D sheet2, do dữ liệu em nhiều, lên em muốn dùng VBA, vậy mong anh chị giúp đỡ em. Em cám ơn ạ
1650087036484.png
1650087102542.png
 

File đính kèm

  • LẤY DỮ LIỆU KHÔNG TRÙNG.xlsm
    545.3 KB · Đọc: 8
Upvote 0
Tặng luôn đấy. . .
Bài đã được tự động gộp:


Tốt nhất là làm file hoàn chỉnh hẳn đi đã, đầy đủ tiêu đề đàng hoàng vào rồi làm một thể bạn nhé, trông file lem nhem quá cũng chán.
file hoàn chỉnh của em là như thế này, do em dùng công thức, lên em phải làm cột phụ A để lấy điều kiện chuyển sang, các cột Kho, mã dài ,mã ngắn và số lượng, file em phải phụ thuộc vào cột phụ A, lên anh giúp em lấy kho và số lượng tương ứng mã hàng đấy sang giúp em, để em bỏ cột Phụ A đấy đi ạ, Em cám ơn anh ạ1650095339847.png
 
Upvote 0
file hoàn chỉnh của em là như thế này, do em dùng công thức, lên em phải làm cột phụ A để lấy điều kiện chuyển sang, các cột Kho, mã dài ,mã ngắn và số lượng, file em phải phụ thuộc vào cột phụ A, lên anh giúp em lấy kho và số lượng tương ứng mã hàng đấy sang giúp em, để em bỏ cột Phụ A đấy đi ạ, Em cám ơn anh ạView attachment 274574
Vậy bạn gửi ảnh thì mình đưa code vào đâu, hay mình đi tạo file mới cho bạn chăng.
 
Upvote 0
Mình hỏi để viết luôn một thể.
1/ Cột mã chuyển về kho của bạn điều kiện tìm kiếm là gì vậy.
2/ Sao lại cần 2 cột kho, hai cột này có khác nhau không.
1,cột mã chuyển kho là dùng vlookup tìm theo cột điều kiện cột D, cột J:L hoặc cột K:L , nếu không có 2 cột J K thì trả về khoảng trắng
2, 2 mã cột kho là 1 ạ
 
Upvote 0

File đính kèm

  • LẤY DỮ LIỆU KHÔNG TRÙNG (1) (1).xlsm
    523.7 KB · Đọc: 14
Upvote 0
Thêm 1 cách khác tham khảo:
Mã:
Sub ABC()
    Dim sArr(), Res(), Dic As Object, i&, iR&, Arr(), K&, X, j&, Y
    Y = Array("2", "3", "4", "6", "7")
    X = Array("2", "1", "3", "3", "4")
    Set Dic = CreateObject("scripting.dictionary")
    With Sheets("OK")
        iR = .Range("L" & Rows.Count).End(3).Row
        sArr = .Range("I2:L" & iR).Value
        For i = 1 To UBound(sArr)
            If Dic.exists(sArr(i, 4)) = False Then
                Dic.Item(sArr(i, 4)) = i
                Dic.Item(sArr(i, 1)) = i
            End If
        Next
    End With
    With Sheets("data")
        iR = .Range("A" & Rows.Count).End(3).Row
        Arr = .Range("A2:D" & iR).Value
        ReDim Res(1 To UBound(Arr), 1 To 7)
        For i = 1 To UBound(Arr)
            If Dic.exists(Arr(i, 1)) = False Then
                K = K + 1
                Res(K, 1) = K
                For j = 0 To 4
                    Res(K, CLng(Y(j))) = Arr(i, CLng(X(j)))
                Next
                If Dic.Item(Arr(i, 2)) > 0 Then
                    Res(K, 5) = sArr(Dic.Item(Arr(i, 2)), 4)
                End If
            End If
        Next
        If K Then
            Sheets("OK").Range("B2:H100000").ClearContents
            Sheets("OK").Range("B2").Resize(K, 7).Value = Res
        End If
    End With
    Set Dic = Nothing
End Sub
 

File đính kèm

  • LẤY DỮ LIỆU KHÔNG TRÙNG.xlsm
    525.8 KB · Đọc: 2
Upvote 0
Thêm 1 cách khác tham khảo:
Mã:
Sub ABC()
    Dim sArr(), Res(), Dic As Object, i&, iR&, Arr(), K&, X, j&, Y
    Y = Array("2", "3", "4", "6", "7")
    X = Array("2", "1", "3", "3", "4")
    Set Dic = CreateObject("scripting.dictionary")
    With Sheets("OK")
        iR = .Range("L" & Rows.Count).End(3).Row
        sArr = .Range("I2:L" & iR).Value
        For i = 1 To UBound(sArr)
            If Dic.exists(sArr(i, 4)) = False Then
                Dic.Item(sArr(i, 4)) = i
                Dic.Item(sArr(i, 1)) = i
            End If
        Next
    End With
    With Sheets("data")
        iR = .Range("A" & Rows.Count).End(3).Row
        Arr = .Range("A2:D" & iR).Value
        ReDim Res(1 To UBound(Arr), 1 To 7)
        For i = 1 To UBound(Arr)
            If Dic.exists(Arr(i, 1)) = False Then
                K = K + 1
                Res(K, 1) = K
                For j = 0 To 4
                    Res(K, CLng(Y(j))) = Arr(i, CLng(X(j)))
                Next
                If Dic.Item(Arr(i, 2)) > 0 Then
                    Res(K, 5) = sArr(Dic.Item(Arr(i, 2)), 4)
                End If
            End If
        Next
        If K Then
            Sheets("OK").Range("B2:H100000").ClearContents
            Sheets("OK").Range("B2").Resize(K, 7).Value = Res
        End If
    End With
    Set Dic = Nothing
End Sub
Vâng, em cám ơn anh ạ
Bài đã được tự động gộp:

Thêm 1 cách khác tham khảo:
Mã:
Sub ABC()
    Dim sArr(), Res(), Dic As Object, i&, iR&, Arr(), K&, X, j&, Y
    Y = Array("2", "3", "4", "6", "7")
    X = Array("2", "1", "3", "3", "4")
    Set Dic = CreateObject("scripting.dictionary")
    With Sheets("OK")
        iR = .Range("L" & Rows.Count).End(3).Row
        sArr = .Range("I2:L" & iR).Value
        For i = 1 To UBound(sArr)
            If Dic.exists(sArr(i, 4)) = False Then
                Dic.Item(sArr(i, 4)) = i
                Dic.Item(sArr(i, 1)) = i
            End If
        Next
    End With
    With Sheets("data")
        iR = .Range("A" & Rows.Count).End(3).Row
        Arr = .Range("A2:D" & iR).Value
        ReDim Res(1 To UBound(Arr), 1 To 7)
        For i = 1 To UBound(Arr)
            If Dic.exists(Arr(i, 1)) = False Then
                K = K + 1
                Res(K, 1) = K
                For j = 0 To 4
                    Res(K, CLng(Y(j))) = Arr(i, CLng(X(j)))
                Next
                If Dic.Item(Arr(i, 2)) > 0 Then
                    Res(K, 5) = sArr(Dic.Item(Arr(i, 2)), 4)
                End If
            End If
        Next
        If K Then
            Sheets("OK").Range("B2:H100000").ClearContents
            Sheets("OK").Range("B2").Resize(K, 7).Value = Res
        End If
    End With
    Set Dic = Nothing
End Sub
Dạ. Em thử thì em thấy mã chuyển về kho không đúng lắm. Mã chuyển về kho dựa vào điều kiện mã dài ( cột D).nhưng anh đang lấy theo mã ngắn (cột C) thì phải. Có vẻ không đúng lắm ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ. Em thử thì em thấy mã chuyển về kho không đúng lắm. Mã chuyển về kho dựa vào điều kiện mã dài ( cột D).nhưng anh đang lấy theo mã ngắn (cột C) thì phải. Có vẻ không đúng lắm ạ
Hihi. Tham khảo vui thôi. Đang tập tành về dictionary
 
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom