Xin chĩ giùm liên kết giữa 2 listbox

Liên hệ QC

cupid240486

Thành viên mới
Tham gia
25/10/10
Bài viết
16
Được thích
1
Mình đang bắt đầu bước vào Excel, mong mọi người giúp đỡ nhiều nhé.

Mình có 1 bảng data gồm 2 cột là Hàng Hóa và Danh Mục Hàng Hóa,
Hiện mình đã làm listbox theo kiêu Validation.
Nhưng giờ ý của mình là ở list hàng hóa, khi có quá nhiều mặt hàng, ta chỉ cần gõ chữ cái đầu thì nó sẽ xổ ra tên những mặt hàng tương ứng.
Rồi khi chọn xong tên mặt hàng thì ở Danh Mục Hàng Hóa sẽ tự động hiện dúng dữ liệu tương ứng.
 

File đính kèm

Cái bạn gọi là Listbox thật ra nó là List trong Validation, không phải là Listbox.

Bạn muốn làm được như yêu cầu thì chỉ việc thêm một combobox nữa thôi, bỏ List đi, thay đổi cấu trúc bảng một chút rồi thêm hàm VLOOKUP vào B4 là ổn!
 

File đính kèm

Upvote 0
Bạn minhthien ơi. Mình đã áp dụng hàm VLOOKUP của bạn vào truờng hợp này nhưng nó không chạy. Bạn xem giùm mình nhé. Có gì giải thích giùm mình lun hén.
 

File đính kèm

Upvote 0
Bạn minhthien ơi. Mình đã áp dụng hàm VLOOKUP của bạn vào truờng hợp này nhưng nó không chạy. Bạn xem giùm mình nhé. Có gì giải thích giùm mình lun hén.

Không chạy là do bạn cài đặt trong Tool tính toán thủ công. Cách giải quyết là vào Tool > Options... > Calculation, tại đây chọn là Automatic > OK.

Nếu bạn đã biết sử dụng macro thì không cần phải tính hàm nữa đâu, chỉ cần sử dụng Combobox thêm 1 cột nữa rồi lấy giá trị ở cột 2 thay cho VLOOKUP.
 
Lần chỉnh sửa cuối:
Upvote 0
Không chạy là do bạn cài đặt trong Tool tính toán thủ công. Cách giải quyết là vào Tool > Options... > Calculation, tại đây chọn là Automatic > OK.

Nếu bạn đã biết sử dụng macro thì không cần phải tính hàm nữa đâu, chỉ cần sử dụng Combobox thêm 1 cột nữa rồi lấy giá trị ở cột 2 thay cho VLOOKUP.

Thanks bạn rất nhiều. Mình làm được rồi. Làm theo kiểu hàm VlOOKUP
Mà mình có biết dùng Macro đâu. Mình mới bước vào Excel thôi, thấy mọi người làm rồi bắt chước kiểu copy nên cũng chưa hiểu gì nhiều cả.

Chắc bạn có xem qua cái file mình gửi ở trên. Bạn có cách nào giúp mình giải quyết cái vấn đề thứ 2 là nhập dữ liệu vào đúng sheet được không?
 
Upvote 0
Thanks bạn rất nhiều. Mình làm được rồi. Làm theo kiểu hàm VlOOKUP
Mà mình có biết dùng Macro đâu. Mình mới bước vào Excel thôi, thấy mọi người làm rồi bắt chước kiểu copy nên cũng chưa hiểu gì nhiều cả.

Chắc bạn có xem qua cái file mình gửi ở trên. Bạn có cách nào giúp mình giải quyết cái vấn đề thứ 2 là nhập dữ liệu vào đúng sheet được không?

Muốn làm được như vậy, bạn phải chắc chắn là nhập tại ô B9 kiểu ngày tháng năm thì mới thực hiện được.

Thủ tục nhập liệu mới như sau:

PHP:
Private Sub NL_Click()
  If WorksheetFunction.CountIf([B3:B14], "") > 0 Then
    MsgBox "Ban chua nhap du lieu" & Chr(13) & "Xin hay kiem tra lai", , "Thong Bao"
  Else
    If Val([B9]) = 0 Then MsgBox "Ban nhap khong dung ngay thang", , "Thong Bao": Exit Sub
    Dim MySheet As String, MyArr
    MySheet = Format([B9], "mmm")
    MyArr = WorksheetFunction.Transpose(Range("B3:B14").Value)
    Sheets(MySheet).Range("B65536").End(xlUp).Offset(1).Resize(, 12) = MyArr
    MsgBox "Du lieu da nhap hoan tat tai sheet " & MySheet, , "Thong Bao"
  End If
End Sub

Vì bạn bẫy lỗi mọi ô trong cột B nếu rỗng thì thông báo, tôi đã dùng WorksheetFunction.CountIf([B3:B14], "") > 0 cho ngắn gọn.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
cám ơn minhthien nhiều lắm. Bạn có thể giải thích rõ hơn đoạn code ở trên cho mình hiểu dc không? Dòng nào để cho nó vào đúng sheet nhỉ.
 
Upvote 0
cám ơn minhthien nhiều lắm. Bạn có thể giải thích rõ hơn đoạn code ở trên cho mình hiểu dc không? Dòng nào để cho nó vào đúng sheet nhỉ.

Mã:
[COLOR=#000000][COLOR=#007700]Private [/COLOR][COLOR=#0000BB]Sub NL_Click[/COLOR][COLOR=#007700]()
  If [/COLOR][COLOR=#0000BB]WorksheetFunction[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]CountIf[/COLOR][COLOR=#007700]([[/COLOR][COLOR=#0000BB]B3[/COLOR][COLOR=#007700]:[/COLOR][COLOR=#0000BB]B14[/COLOR][COLOR=#007700]], [/COLOR][COLOR=#DD0000]""[/COLOR][COLOR=#007700]) > [/COLOR][COLOR=#0000BB]0 Then
    MsgBox [/COLOR][COLOR=#DD0000]"Ban chua nhap du lieu" [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000BB]Chr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]13[/COLOR][COLOR=#007700]) & [/COLOR][COLOR=#DD0000]"Xin hay kiem tra lai"[/COLOR][COLOR=#007700], , [/COLOR][COLOR=#DD0000]"Thong Bao"
  [/COLOR][COLOR=#007700]Else
    If [/COLOR][COLOR=#0000BB]Val[/COLOR][COLOR=#007700]([[/COLOR][COLOR=#0000BB]B9[/COLOR][COLOR=#007700]]) = [/COLOR][COLOR=#0000BB]0 Then MsgBox [/COLOR][COLOR=#DD0000]"Ban nhap khong dung ngay thang"[/COLOR][COLOR=#007700], , [/COLOR][COLOR=#DD0000]"Thong Bao"[/COLOR][COLOR=#007700]: Exit [/COLOR][COLOR=#0000BB]Sub
    Dim MySheet [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]String[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]MyArr
    MySheet [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]Format[/COLOR][COLOR=#007700]([[/COLOR][COLOR=#0000BB]B9[/COLOR][COLOR=#007700]], [/COLOR][COLOR=#DD0000]"mmm"[/COLOR][COLOR=#007700])
    [/COLOR][COLOR=#0000BB]MyArr [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]WorksheetFunction[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]Transpose[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"B3:B14"[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Value[/COLOR][COLOR=#007700])
    [/COLOR][COLOR=#0000BB]Sheets[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]MySheet[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Range[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"B65536"[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]End[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]xlUp[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Offset[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]).[/COLOR][COLOR=#0000BB]Resize[/COLOR][COLOR=#007700](, [/COLOR][COLOR=#0000BB]12[/COLOR][COLOR=#007700]) = [/COLOR][COLOR=#0000BB]MyArr
    MsgBox [/COLOR][COLOR=#DD0000]"Du lieu da nhap hoan tat tai sheet " [/COLOR][COLOR=#007700]& [/COLOR][COLOR=#0000BB]MySheet[/COLOR][COLOR=#007700], , [/COLOR][COLOR=#DD0000]"Thong Bao"
  [/COLOR][COLOR=#0000BB]End [/COLOR][COLOR=#007700]If
[/COLOR][COLOR=#0000BB]End Sub  [/COLOR][/COLOR]

Trong code trên, vì các sheet của bạn đặt theo là tháng với định dạng "mmm", điều kiện để chuyển dữ liệu qua sheet đó tại ngày đến tức là ô B9. Căn cứ vào tháng của ngày đến, định dạng lại và lấy đúng tháng (MySheet = Format([B9], "mmm")) từ đó chỉ việc gọi sheet có chứa tên của tháng đó mà nhập vào thôi (Sheets(MySheet)).

Nếu là tôi thì chẳng bao giờ tôi làm nhiều sheet như vậy, chỉ cần 1 sheet là đủ, sau đó, muốn truy vấn theo tháng, chỉ cần AutoFilter là có đấy đủ.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom