Xem giùm code VBA, không update được

Liên hệ QC

tamhoncuada10313

Thành viên thường trực
Tham gia
7/4/08
Bài viết
221
Được thích
65
Khi cập nhật thêm người vào DS thì bên SN không lọc ra được.
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn không upload file thì sao biết code của bạn thế nào???
 
Upvote 0

File đính kèm

Upvote 0

File đính kèm

Upvote 0
Bài này dùng For sẽ không hay đâu! Nên Sort theo tháng, copy Visible cell rồi paste sang sheet SN
Tiến trình thực hiện như sau:
1> Xác định vùng chứa DS trong sheet DS bằng CurrentRegion, sau đó Format cột C là mmm
2> Sort DS theo cột C, với Option : Jan, Feb....
3> AutoFilter DS theo cột C, điều kiện dựa vào cell D4 trong Sheet SN
4> Chọn các cell Visible Only (là các cell đang hiện
5> Copy nó và paste vào cell A5 của Sheet SN
6> Trả mọi thử ở sheet DS về vị trí ban đầu
7> Đánh số TT cho cột A của sheet SN


PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Rng As Range, Luu As Variant, DK As String
  Application.ScreenUpdating = False
  If Target.Address = "$D$4" Then
     DK = Choose([D4], "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")
     Range("A5:D" & [D65536].End(xlUp).Row).ClearContents
     Set Rng = Sheets("DS").[A3].CurrentRegion
     Luu = Rng.Value
     With Rng
       .Offset(, 2).Resize(, 1).NumberFormat = "mmm"
       .Sort Key1:=Rng(2, 3), Order1:=1, Header:=1, OrderCustom:=4
       .AutoFilter Field:=3, Criteria1:=DK
       .SpecialCells(xlCellTypeVisible).Copy
       [A5].PasteSpecial xlPasteValues
       .AutoFilter
       .Value = Luu
       .Offset(, 2).Resize(, 1).NumberFormat = "dd/mm/yyyy"
     End With
     With Range("A6:A" & [A65536].End(xlUp).Row)
       .Formula = "=Row(1:" & .Rows.Count & ")"
       .Value = .Value
     End With
     [D4].Select
  End If
End Sub
Chắc chắn tốc độ sẽ nhanh hơn rất nhiều
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Nếu lọc DS sinh nhật theo ngày hiện hành thì sửa code như thế nào vậy anh NDU? (Có thể báo trước 1 ngày để chuẩn bị: Ví dụ ngày mai là sinh nhật em thì ngày hôm nay nó hiện danh sách có tên em trong đó?
 
Upvote 0
Nếu lọc DS sinh nhật theo ngày hiện hành thì sửa code như thế nào vậy anh NDU? (Có thể báo trước 1 ngày để chuẩn bị: Ví dụ ngày mai là sinh nhật em thì ngày hôm nay nó hiện danh sách có tên em trong đó?
Lọc theo tháng mới khó chứ ngày thì dể rồi!
Đơn giãn nhất là bạn lấy file của tôi ở trên, sau khi lọc sang sheet SN xong thì lọc tiếp lần nữa theo ngày (Advanced Filter hoặc AutoFilter)
Tôi nghĩ bạn thừa sức làm tiếp
 
Upvote 0
Em sẽ thử xem có được ko.

Câu này em ko dám nhận đâu. (Đang tập ghi macro học từng chữ mà anh cứ đùa :(()
Tôi nói thật mà...
Này nhé: Có phải nếu làm bằng tay thì bạn sẽ AutoFilter (Hoặc Advanced Filter) để lọc ra ai đó có ngày SN trùng với TODAY() không? (sau khi có danh sách những người sinh cùng tháng)
Vậy thì còn chần chờ gì nữa mà không Record lấy 1 macro quá trình thao tác bằng tay này nhỉ?
Nếu cố gắng thì chắc chắn bạn sẽ làm được, thậm chí là lọc trực tiếp luôn chứ không cần qua quá trình phụ như tôi nói ở trên:
Ngay sau đoạn:
AutoFilter Field:=3, Criteria1:=DK
(tức đã Filter ra được những người cùng tháng sinh) thì ta làm 1 vòng lập For tại đây, quét qua vùng dử liệu Visible cell xem em nào có ngày sinh trùng với ngày sinh ta cần
Tại sao ngay từ đầu ta không dùng vòng lập luôn cho gọn? Vì với dử liệu lớn, bạn không lọc trước tháng sinh thì vòng lập sẽ chạy từ đầu đến cuối mệt nghĩ luôn ---> Sau khi lọc xong phần tháng thì số lượng cell còn lại khá ít ---> Dùng For để quét cũng nhẹ nhàng hơn!
Một vài gợi ý cho bạn tham khảo!
Nói thêm: Bạn nên nghiên cứu hộp Goto (Phím tắt là Ctrl + G)... Hãy record macro, bấm Ctrl + G rồi chọn vài món trong đó xem macro viết cái gì... Trong khá nhiều trường hợp thì hộp Goto này cứu nguy những bàn thua trông thấy đấy
(Chiêu này học của sư phụ SA_DQ)
 
Upvote 0
Web KT

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

Back
Top Bottom