Code VBA tra cứu kết quả trả về mảng dữ liệu (1 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
4
Được thích
1
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
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!
Dạ em cảm ơn anh ạ. Em có Copy Code và đã thử ạ, nhưng có một vấn đề phát sinh là khi em đổi mã của cột Mã trong Sheet "Bang do". Ví dụ đổi từ mã 2 sang mã 1 do thông số của mã 2 nhiều hơn thông số của mã 1 thì khi mình chuyển đổi vậy, nó sẽ bị sót lại các thông số thừa của mã 2 ạ. Anh khắc phục giúp em với ạ
 
Upvote 0
Trong macro sự kiện có ngay lúc mới vô là dòng lệnh xóa dữ liệu cũ; & nó đang là thế này
PHP:
Target.Offset(, 1).Resize(54, 6).Value = Space(0)
Dịch sang tiếng Việt sẽ là Xóa 54 dòng & 6 cột (dữ liệu) kể từ ô bên phải liền kề với ô vừa nhập;
Con số 54 là mình án chừng; Nếu nó còn nhỏ thì bạn tăng lên
[Bảng dữ liệu của bạn có 1126 dòng + 1;
(/ới 112 mã công việc thì 1126/60 mình cứ đinh ninh là OK; xin lỗi bạn về điều này nha!]
 
Upvote 0

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

Back
Top Bottom