Code VBA tra cứu kết quả trả về mảng dữ liệu (6 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

  • Tôi tuân thủ nội quy khi đăng bài

    tiendu02

    Thành viên mới
    Tham gia
    23/2/20
    Bài viết
    3
    Được thích
    0
    Em chào các anh/chị trong diễn đàn ạ.
    Các anh/chị trong diễn đàn có ai biết code VBA tra cứu kết quả trả về mảng dữ liệu không ạ? Chỉ giúp em với.
    Em có file excel gồm 2 Sheet: Sheet "Data" và Sheet "Bang do". Bài toán yêu cầu là khi em nhập bất kỳ một mã nào đó ở một hàng bất kỳ của cột Mã trong Sheet "Bang do" thì các thông số của mã đó sẽ được lấy ra từ Sheet "Data" và giữ nguyên định dạng ạ. (File excel phía dưới).
    Em cảm ơn anh/chị trong diễn đàn ạ.
     

    File đính kèm

    Lần chỉnh sửa cuối:
    Em chào các anh/chị trong diễn đàn ạ.
    Các anh/chị trong diễn đàn có ai biết code VBA tra cứu kết quả trả về mảng dữ liệu không ạ? Chỉ giúp em với.
    Em có file excel gồm 2 Sheet: Sheet "Data" và Sheet "Bang do". Bài toán yêu cầu là khi em nhập bất kỳ một mã nào đó ở một hàng bất kỳ của cột Mã trong Sheet "Bang do" thì các thông số của mã đó sẽ được lấy ra từ Sheet "Data" và giữ nguyên định dạng ạ. (File excel phía dưới).
    Em cảm ơn anh/chị trong diễn đàn ạ.
    Góp vui.
    bạn thử gõ số (1,2,3,....) vào Cột A bảng dò và Gõ Enter xem điều gì đã diễn ra.
    Xem file
     

    File đính kèm

    Upvote 0
    Em cảm ơn anh/chị nhiều ạ
    Bài đã được tự động gộp:

    Góp vui.
    bạn thử gõ số (1,2,3,....) vào Cột A bảng dò và Gõ Enter xem điều gì đã diễn ra.
    Xem file
    Anh có thể thêm câu lệnh giúp em là khi em xóa mã trong cột Mã của Sheet "Bang do" thì các thông số của mã đó cũng sẽ tự động xóa đi với ạ.
     
    Lần chỉnh sửa cuối:
    Upvote 0
    Em cảm ơn anh/chị nhiều ạ
    Bài đã được tự động gộp:


    Anh có thể thêm câu lệnh giúp em là khi em xóa mã trong cột Mã của Sheet "Bang do" thì các thông số của mã đó cũng sẽ tự động xóa đi với ạ.
    Tức là Khi cột A/ bảng dò đã có 1 mã nào đó ví dụ là số 3. và các cột B-G đã có số liệu. Giờ xóa số 3 ở cột A đi thì lập tức dữ liệu của mã sô 3 ấy (từ cột B-G của sheet bảng dò) cũng bị xóa
     
    Upvote 0
    Thay code Trong Sheet Bang do bằng code này:
    Dùng tạm trong khi chờ giải pháp tốt hơn.

    Mã:
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A3: A100000")) Is Nothing Then
        If Not IsEmpty(Target) Then
            Dim Rng As Range, R&, R2&
            Dim d&, Lr&
            Dim Sh As Worksheet
            Dim Ma
                Ma = Target
                Set Sh = Sheets("Data")
                Lr = Sh.Range("A1000000").End(xlUp).Row
                Set Rng = Sh.Range("A1:A" & Lr)
            If Not Rng.Find(Ma) Is Nothing Then
                R = Rng.Find(Ma).Row: d = Target.Row
                R2 = Sh.Range("A" & R).End(xlDown).Row - 1
                Sh.Range("B" & R, "G" & R2).Copy Range("B" & d)
            End If
        Else
        Dim Cell
       
     Dim Cell
            R = Target.Row
            R2 = Range("A" & R).End(xlDown).Row - 1
            If R2 >= 1048500 Then R2 = Range("B1048575").End(xlUp).Row
                Range("B" & R, "G" & R2).ClearContents
        End If
    End If
    End Sub
     
    Lần chỉnh sửa cuối:
    Upvote 0
    Mã:
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A3: A100000")) Is Nothing Then
        If Not IsEmpty(Target) Then
            Dim Rng As Range, R&, R2&
            Dim d&, Lr&
            Dim Sh As Worksheet
            Dim Ma
                Ma = Target
                Set Sh = Sheets("Data")
                Lr = Sh.Range("A1000000").End(xlUp).Row
                Set Rng = Sh.Range("A1:A" & Lr)
            If Not Rng.Find(Ma) Is Nothing Then
                R = Rng.Find(Ma).Row: d = Target.Row
                R2 = Sh.Range("A" & R).End(xlDown).Row - 1
                Sh.Range("B" & R, "G" & R2).Copy Range("B" & d)
            End If
        Else
        Dim Cell
      
     Dim Cell
            R = Target.Row
            R2 = Range("A" & R).End(xlDown).Row - 1
            If R2 >= 1048500 Then R2 = Range("B1048575").End(xlUp).Row
                Range("B" & R, "G" & R2).ClearContents
        End If
    End If
    End Sub
    Dựa theo macro sự kiện này ta có thể chuyển thể sang UDF
    Tuy nhiên dữ liệu trả về không kèm theo định dạng như tác giả bài đăng mong muốn;
    Còn xài E365 thì có thể có hàm cho ra mảng kết quả luôn!
     
    Upvote 0

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

    Back
    Top Bottom