[Trợ Giúp] Code VBA Excel Tìm Kiếm Khi Có Nhiều Kết Quả Tương Ứng

Liên hệ QC

Bandit

Thành viên chính thức
Tham gia
12/9/19
Bài viết
55
Được thích
38
Em chào anh chị
Em nhờ anh chị trợ giúp viết code vba cho trường hợp ở file đính kèm cụ thể như sau ạ
Em có một bảng tính gồm các sản phẩm có thể lặp lại, nhưng quầy bán sẽ khác nhau
Và yêu cầu mong muốn là khi chọn một sản phẩm thì các quầy liên quan tới sản phẩm đó sẽ hiển thị lần lượt xuống các cột bên dưới
Đây là ví dụ minh họa để em áp dụng vào file khi làm việc, nên chỉ muốn sử dụng code vba để làm, và có thể không sử dụng code vba để lọc ra như trên mà dùng code để tìm kiếm được không ạ
Em xin chân thành cảm ơn
 

File đính kèm

  • File Vi Du.xlsx
    12 KB · Đọc: 19
Em chào anh chị
Em nhờ anh chị trợ giúp viết code vba cho trường hợp ở file đính kèm cụ thể như sau ạ
Em có một bảng tính gồm các sản phẩm có thể lặp lại, nhưng quầy bán sẽ khác nhau
Và yêu cầu mong muốn là khi chọn một sản phẩm thì các quầy liên quan tới sản phẩm đó sẽ hiển thị lần lượt xuống các cột bên dưới
Đây là ví dụ minh họa để em áp dụng vào file khi làm việc, nên chỉ muốn sử dụng code vba để làm, và có thể không sử dụng code vba để lọc ra như trên mà dùng code để tìm kiếm được không ạ
Em xin chân thành cảm ơn
Nói dài dòng quá, bạn thử:
PHP:
Sub Test()
    Dim a(), b(), i&, k%, LR, DK
    With ActiveSheet
        a = .Range("B2", .Range("B100000").End(3)).Resize(, 2).Value: LR = UBound(a)
    End With
    DK = ActiveSheet.Range("E1"): ReDim b(1 To LR, 1 To 1)
    With ActiveSheet
        For i = 1 To LR
            If a(i, 1) = DK Then
                k = k + 1: b(k, 1) = a(i, 2)
                If k Then
                    With ActiveSheet
                        .Range("F2:f1000").ClearContents
                        .Range("f2").Resize(k) = b
                    End With
                End If: End If: Next
    End With
End Sub
 
Upvote 0
Nói dài dòng quá, bạn thử:
PHP:
Sub Test()
    Dim a(), b(), i&, k%, LR, DK
    With ActiveSheet
        a = .Range("B2", .Range("B100000").End(3)).Resize(, 2).Value: LR = UBound(a)
    End With
    DK = ActiveSheet.Range("E1"): ReDim b(1 To LR, 1 To 1)
    With ActiveSheet
        For i = 1 To LR
            If a(i, 1) = DK Then
                k = k + 1: b(k, 1) = a(i, 2)
                If k Then
                    With ActiveSheet
                        .Range("F2:f1000").ClearContents
                        .Range("f2").Resize(k) = b
                    End With
                End If: End If: Next
    End With
End Sub
Em cảm ơn bác nhiều ạ, kết quả trả về em thấy đúng yêu cầu rồi
 
Upvote 0
Nói dài dòng quá, bạn thử:
PHP:
Sub Test()
    Dim a(), b(), i&, k%, LR, DK
    With ActiveSheet
        a = .Range("B2", .Range("B100000").End(3)).Resize(, 2).Value: LR = UBound(a)
    End With
    DK = ActiveSheet.Range("E1"): ReDim b(1 To LR, 1 To 1)
    With ActiveSheet
        For i = 1 To LR
            If a(i, 1) = DK Then
                k = k + 1: b(k, 1) = a(i, 2)
                If k Then
                    With ActiveSheet
                        .Range("F2:f1000").ClearContents
                        .Range("f2").Resize(k) = b
                    End With
                End If: End If: Next
    End With
End Sub

Nói dài dòng quá, bạn thử:
PHP:
Sub Test()
    Dim a(), b(), i&, k%, LR, DK
    With ActiveSheet
        a = .Range("B2", .Range("B100000").End(3)).Resize(, 2).Value: LR = UBound(a)
    End With
    DK = ActiveSheet.Range("E1"): ReDim b(1 To LR, 1 To 1)
    With ActiveSheet
        For i = 1 To LR
            If a(i, 1) = DK Then
                k = k + 1: b(k, 1) = a(i, 2)
                If k Then
                    With ActiveSheet
                        .Range("F2:f1000").ClearContents
                        .Range("f2").Resize(k) = b
                    End With
                End If: End If: Next
    End With
End Sub

Xin chào bác @phulien1902 , Bin cũng gặp vấn đề gần giống với chủ đề này. Mong bác giúp về VBA với ah.
============================================================================
Mình có danh sách hàng cần đi phát và cần giữ lại.
Sheet 1: Danh sách tổng
Sheet 2: Danh sách các khu vực không đi phát hàng, nếu khách hàng ở khu vực này thì hàng sẽ không đi phát và sẽ được giữ lại.

Vấn đề đặt ra là địa chỉ của khách hàng ở hai cột khác nhau và có độ dài, ngắn khác nhau. Mình muốn dò tìm địa chỉ của khách hàng ở sheet 1 so với khu vực không phát hàng ở sheet 2.
Nếu địa chỉ khách hàng có giá trị trùng với giá trị ở sheet 2 thì sẽ trả về kết quả "Giữ lại không đi phát".

============================================================================
 

File đính kèm

  • 201007 MANI_TEST.xlsx
    29.2 KB · Đọc: 4
Upvote 0
Em cảm ơn bác nhiều ạ, kết quả trả về em thấy đúng yêu cầu rồi
Có thể viết 1 hàm mảng người dùng cũng ra kết quả mong muốn;
Vấn đề đặt ra là địa chỉ của khách hàng ở hai cột khác nhau và có độ dài, ngắn khác nhau. Mình muốn dò tìm địa chỉ của khách hàng ở sheet 1 so với khu vực không phát hàng ở sheet 2.
Có cùng độ dài còn chết lên chết xuống nữa là có độ dài khác nhau; Ở nước ta có 9 tỉnh có huyện Châu Thành, lúc đó mà chọn may rủi ư?
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom