Ðề: /(/hững mong là không fải đưa file lên! (*) Sửa Validation tại ô [i8] thuộc trang tính ‘So Cai’:
Vô menu Insert -> Name -> Define . . .
Trong hộp Names in Workbook ta chọn dòng ‘TKSC’
Trong hộp Refers to ta sửa lại thành =’Sheet1’!$A$1:$A$103
Sau đó nhấn vô nút {OK}
(Kiểm tra kết quả tại [I8] có theo iêu cầu chúng ta hay chưa?
(*) Fải chuột vô tên ‘SO CAI’ trên thanh SheetName & chọn dòng cuối trên menu vừa xuất hiện;
Ta sẽ được đưa đến CS (cửa sổ) VBE của trang tính này;
Tại đầy đang có macro nội dung như sau
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = [i8].Address Then loc
End Sub
Ta sẽ fải sửa lại nội dung câu lệnh này, sau khi tạo cho mình 1 macro lọc AdvancedFilter bằng các bước sau:
(1) Dùng chuột chọn toàn bộ vùng’M6:N8’ của trang ‘SO CAI’ & thực hiện fương thức Cut
(2) Sang trang tính ‘NKDL’ ta dán vô vùng [AB1:AC3] & tiếp theo ta thu nhỏ các cột [N:Z] tối đa;
(3) Tiếp nữa, tại trang này ta copy vùng ‘A6:M6’ đến vùng bắt đầu từ [AA6]
(4) Tiến hành ghi macro:
Vô menu Tool -> Macro & chọn dòng Record New Macro. . .
Ta bấm vô nút {OK} (như vậy là ta chấp nhận tên macro do VBE áp đặt;
(Từ đây trở đi, hành động của ta sẽ được ghi lại thành những dòng lệnh trong macro)
Ta vô menu Data, chọn dòng Filter; Tiếp theo chọn dòng Advanced Filter. . . ;
Trong CS con vừa xuất hiện, tại ngăn Action ta chọn dòng ‘Copy to Another location
Trong ngăn List range ta nhập địa chỉ A6:M591;
Trong ngăn Criteria ta nhập ‘AB1:Ac3’
Trong ngăn Copy to ta nhập địa chỉ AA6:AL6 & bấm vô nút {OK}
Ta kết thúc công chuyện ghi macro bằng 1 trong 2 cách sau:
(a) Bấm vô nút ‘Stop Recording’ nếu may mắn bạn nhìn thấy nó đâu đó trên trang tính;
(b) Vô menu Tool -> Macro -> Stop Recording
(5) Xem & chỉnh sửa macro:
Bạn tìm xem trong module nào đó có macro na ná vầy
Mã:
Sub Macro1()
Range("A6:M591").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"AB1:AC3"), CopyToRange:=Range("AA6:AL6"), Unique:=False
End Sub
Thì tô chọn toàn bộ macro & áp dụng fương thức Cut để đem đến CS VBE của trang ‘SO CAI’ & dán vô đó.
(6) Sửa & thêm các dòng lệnh để ta có 2 macro sau:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = [i8].Address Then Macro1
End Sub
Mã:
Sub Macro1()
Dim Sh As Worksheet, Rng As Range
Dim Rws As Long
Set Sh = ThisWorkbook.Worksheets("NKDL")
Set Rng = Sh.[C6].CurrentRegion
Rws = Rng.Rows.Count
Set Rng = Sh.[B6].Resize(Rws, 12)
Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sh.Range( _
"AB1:AC3"), CopyToRange:=Sh.Range("AA6:AL6"), Unique:=False
'Xóa Du Lieu Cu:'
Rws = [B18].CurrentRegion.Rows.Count
[A18].Resize(Rws, 12).ClearContents
'Copy Du Lieu Loc Sang:'
Sh.[AB7].CurrentRegion.Offset(1).Copy Destination:=[A18]
End Sub