1. Chuẩn hóa tiêu đề của 2 sheet cho giống nhau.Em có bài này nhờ các cao thủ thiết lập dùm cho em nhe!
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Address <> "$B$1" Then Exit Sub
[A5:B10000].Clear
Sheet1.[A1].CurrentRegion.AdvancedFilter xlFilterCopy, [A1:A2], [A4:B4]
End Sub
Thì code trên thực hiện đúng việc đó mà: chọn mã hàng ở B1 thì sẽ lọc ra những mã hàng và tên hàng ứng với mã khách hàng đó. Tuy nhiên, mình không hiểu chỗ màu đỏ nhằm mục đích gì, tại sao sau khi chọn mã tại B1 rồi lại phải "click chuột vào vùng từ A5:A16" nữa?@nghiaphuc ơi, làm thế này thì mình cũng làm được rùi. Nhưng ý mình muốn là: Khi chọn mã khách hàng ở ô B1 và click chuột vào vùng từ A5:A16 thì nó chỉ hiện ra mã hàng và tên hàng của mã khách hàng đó thôi ah!
À, hiểu rồi, ý bạn muốn tạo Validation List động. Tuy nhiên việc đặt mã hàng của bạn chưa phù hợp (1 mã không thể dùng chung cho 2 mặt hàng). Mình làm như sau:Ý mình là: Nếu click chuột vào vùng ("A5:A16") của sheet BC thì nó sẽ hiện ra một list chọn mã hàng và tên hàng của khách hàng đó. Khi đó ta chọn mã hàng nào thì nó sẽ cập nhật mã hàng đó vào cột A và tên hàng vào cột B ah!?
KH=OFFSET(DATA!$A$1,1,,COUNTA(DATA!$A:$A)-1)
DL=OFFSET(KH,,1)
MH=IF(BC!$B$1="",DL,OFFSET(DATA!$B$1,MATCH(BC!$B$1,KH,0),,COUNTIF(DATA!$A:$A,BC!$B$1)))
B5=IF(A5="","",VLOOKUP(A5,OFFSET(DL,0,0,,2),2,0))
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Address <> "$B$1" Then Exit Sub
[A5:A30].ClearContents
End Sub
Trời má ơi! Dùng Advanced Filter từ đời nào đến giờ mới biết có chiêu lạ này ---> Cứ tưởng lọc bằng AF là phải lọc tất tần tật, không ngờ nó có thể lựa chọn cột tùy ý1. Chuẩn hóa tiêu đề của 2 sheet cho giống nhau.
2. Thiết lập công thức cho ô A2: =IF(B1="","",B1) để làm tiêu chuẩn lọc (có thể cho ẩn hàng hoặc chọn màu chữ trùng với màu nền để đỡ vướng).
3. Sử dụng code sau cho sheet BC:
PHP:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Or Target.Address <> "$B$1" Then Exit Sub [A5:B10000].Clear Sheet1.[A1].CurrentRegion.AdvancedFilter xlFilterCopy, [A1:A2], [A4:B4] End Sub
Bây giờ em mới nhớ lại cái vụ CopyPicture bữa trước, nếu mình nhập tiêu đề trước thì khỏi cần cái Intersect(.Cells, .Offset(, 1)) đúng không anh?Trời má ơi! Dùng Advanced Filter từ đời nào đến giờ mới biết có chiêu lạ này ---> Cứ tưởng lọc bằng AF là phải lọc tất tần tật, không ngờ nó có thể lựa chọn cột tùy ý
Cảm ơn nghiaphuc nhé