Hỏi : Autofilter với ngày tháng

  • Thread starter Thread starter onlineXP
  • Ngày gửi Ngày gửi
Liên hệ QC

onlineXP

Thành viên mới
Tham gia
31/1/09
Bài viết
14
Được thích
6
Chào các bạn,
Mình có 1 cột dữ liệu dạng Date. Mình Record Macro để trích lọc những dữ liệu ngày "01/01/2009" -> Kết quả như ý. sau khi Record Macro thì dòng lệnh được ghi lại là :
Selection.AutoFilter Field:=1, Criteria1:="01/01/2009"
Nhưng khi cho chạy lại Macro này thì nó không hiện dòng nào cả --> khác với lúc ghi Macro

Các bạn giải thích giúp !
 

File đính kèm

Chào các bạn,
Mình có 1 cột dữ liệu dạng Date. Mình Record Macro để trích lọc những dữ liệu ngày "01/01/2009" -> Kết quả như ý. sau khi Record Macro thì dòng lệnh được ghi lại là :
Selection.AutoFilter Field:=1, Criteria1:="01/01/2009"
Nhưng khi cho chạy lại Macro này thì nó không hiện dòng nào cả --> khác với lúc ghi Macro

Các bạn giải thích giúp !
Thứ nhất, cái Selection của bạn có vấn đề, nếu trước khi chạy code, bạn để con trỏ ở vùng khác vùng [A4:I4] thì sao?
Thứ hai, "01/01/2009" là dạng Text (String) trong khi format của cột A là Date.

Bạn phải sửa lại một chút như sau:
Lưu ý, không nên Merge cell trên thanh tiêu đề như vậy!
PHP:
Sub Macro1()
Dim myDate As Date
myDate = DateSerial(2009, 1, 1)
Range("A4:I" & [A65536].End(xlUp).Row).AutoFilter Field:=1, Criteria1:=myDate
End Sub
Hoặc có thể bỏ qua phần khai báo biến:
PHP:
Sub Macro1()
Range("A4:I" & [A65536].End(xlUp).Row).AutoFilter Field:=1, Criteria1:=DateSerial(2009, 1, 1)
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chào các bạn,
Mình có 1 cột dữ liệu dạng Date. Mình Record Macro để trích lọc những dữ liệu ngày "01/01/2009" -> Kết quả như ý. sau khi Record Macro thì dòng lệnh được ghi lại là :
Selection.AutoFilter Field:=1, Criteria1:="01/01/2009"
Nhưng khi cho chạy lại Macro này thì nó không hiện dòng nào cả --> khác với lúc ghi Macro

Các bạn giải thích giúp !
Nếu loay hoay mà không xong, sao bạn không chuyển qua AdvancedFilter?
Bảo đãm ăn chắc và để nguyên Merge cell vẫn không có vấn đề
 
Upvote 0
Nếu loay hoay mà không xong, sao bạn không chuyển qua AdvancedFilter?
Bảo đãm ăn chắc và để nguyên Merge cell vẫn không có vấn đề
Cảm ơn bạn, mình không rành về AdvancedFilter lắm và "hình như" khi AdvancedFilter thì Copy sang Sheet khác không được.

* Gởi bạn Ca_dafi :
Cảm ơn bạn đã nhiệt tình !
Mình vẫn chưa hiểu ở chỗ : mình Record Macro rồi chạy lại Macro đó thì nó không đúng như lúc Record, lạ ghê.

Trong code Record thì Criteria1:="01/01/2009", ngày tháng lại thành chuỗi. Và mình thử Criteria1:=Format("01/01/2009","dd/mm/yyyy") nó cũng sai.

Vấn đề ở đây không phải Selection mà chính là Criteria1 chưa đúng kiểu Date. Vì mình thử
Mã:
Sub Macro1()
 Dim myDate As Date
 myDate = DateSerial(2009, 1, 1)
 Selection.AutoFilter Field:=1, Criteria1:=myDate
End Sub
Thì nó vẫn đúng.
Thực ra mình muốn myDate hoặc (Criteria1) là tham chiếu 1 ô mang giá trị Date (01/01/2009)

Cám ơn sự giúp đỡ của các bạn.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Cảm ơn bạn, mình không rành về AdvancedFilter lắm và "hình như" khi AdvancedFilter thì Copy sang Sheet khác không được.

.
Sao lại không được chứ
Làm thử cho bạn 1 file, dùng Advanced Filter lọc sang sheet khác
Thử xem có Pro không nha! (Code cũng rất ngắn)
 

File đính kèm

Upvote 0
Sao lại không được chứ
Làm thử cho bạn 1 file, dùng Advanced Filter lọc sang sheet khác
Thử xem có Pro không nha! (Code cũng rất ngắn)
Thật bái phục. Cảm ơn bạn rất nhiều
Mình chạy thử thất File rất hay, rất Pro nhưng thật tình mình cũng chưa hiểu hết các câu lệnh + cách tạo cái Calendar đó. Thật tuyệt vời !}}}}}
Mình sẽ cố gắng tự tìm hiểu thêm, nếu còn vướng mắc sẽ xin chỉ giáo tiếp. +-+-+-+
 
Upvote 0
Thật bái phục. Cảm ơn bạn rất nhiều
Mình chạy thử thất File rất hay, rất Pro nhưng thật tình mình cũng chưa hiểu hết các câu lệnh + cách tạo cái Calendar đó. Thật tuyệt vời !}}}}}
Mình sẽ cố gắng tự tìm hiểu thêm, nếu còn vướng mắc sẽ xin chỉ giáo tiếp. +-+-+-+
Các câu lệnh trong đó cũng chỉ là bình thường thôi (tôi record macro quá trình lọc bằng Advanced Filter rồi chỉnh sửa lại code)
Còn cái Calendar thì... vẽ ra... Bằng cách:
- Click phải chuột vào View\Toolbars và chọn mục Control Toolbox
- Trên thanh công cụ này bạn chọn vào nút More Control rồi chọn Calendar Control ... trong list xổ xuống
- Tiếp theo vẽ ra bảng tính
- Click phải vào Calendar, chọn view code rồi viết code gì đó tùy bạn
 
Upvote 0
Cho mình hỏi chút! vây mình muốn có cả 1/1/2009 và 6/9/2009 cùng xuất hiện làm thể náo với hàm lọc này
 
Upvote 0
Cho mình hỏi chút! vây mình muốn có cả 1/1/2009 và 6/9/2009 cùng xuất hiện làm thể náo với hàm lọc này
Vậy bạn cho hỏi: Nếu như bạn lọc bằng tay thì bạn có lọc được với điều kiện này không (Điều kiện OR)
Nếu làm bằng tay được, cứ hãy record macro là thấy ngay!
 
Upvote 0
Sao lại không được chứ
Làm thử cho bạn 1 file, dùng Advanced Filter lọc sang sheet khác
Thử xem có Pro không nha! (Code cũng rất ngắn)
Thầy ơi như vậy nhưng em muốn lọc theo tháng được ko thầy?
Nhờ thầy giúp dùm em file này với!Lọc theo tháng theo cột J, sau đó chép hết dữ liệu trong phạm vi kẽ khung qua SHEET THÁNG mới!Tất cả các ô trống đều có dữ liệu nhưng em xóa rồi! Nhờ thầy giúp dùm em với!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Xem file mà có hiểu bạn nói cái gì đâu mà giúp
Dạ em muốn thầy giúp dùm em y chang như bài số #5 mà thầy đã làm đó ah! Nhưng em muốn lọc theo THÁNG trong cột J chứ ko phải theo ngày! Em muốn là sau khi lọc theo tháng của cột J thì toàn bộ nội dung lọc tháng 1 sẽ nằm trong SHEET "thang1", tương tự cho đến hết SHEET "thang12"
Em gửi lại file ạ!
 

File đính kèm

Upvote 0
Gởi bạn file sau, cũng advanced filter, copy to, nhưng 1 lần làm cho 12 tháng.
 

File đính kèm

Upvote 0
anh cho em hỏi hình như anh ẩn dòng thứ 5 đi phải ko anh? có tác dụng gì ko vậy anh?
 
Upvote 0
Tiêu đề mà merge cell là không thể Filter hay advance Filter gì cả.
Do đó tôi tạo dòng tiêu đề khác ở dòng 5 để Advanced Filter cho đúng chuẩn dữ liệu. Dòng tạm thì dấu. Kết quả ở các sheet cũng dấu nốt chứ sao giờ.
 
Upvote 0
Gởi bạn file sau, cũng advanced filter, copy to, nhưng 1 lần làm cho 12 tháng.
Anh ơi! Nhờ anh sửa lại CODE dùm em 1 chút được ko anh? Bây giờ em muốn sửa lại là Tháng 1 là từ: 21-12 đến 20-01, tháng 2 là: từ 21-01 đến 20-02... tương tự như vậy cho đến 21-11 đến 20-12 là tháng 12! Xin lỗi anh là lúc trước em ko nói rõ chỗ này!Chân thành cảm ơn anh!
 
Upvote 0
Cũng đơn giản như vậy, thậm chí đơn giản hơn nếu dùng cells phụ:

W2 =DATE(2011;U2;20)
V2 =EDATE(W2;-1)+1
T2 =IF(ISBLANK(J6);FALSE;AND(J6>=$V$2;J6<=$W$2))

PHP:
Sub AdFilter()
For i = 1 To 12
    Sheet1.[U2] = i
    Sheets("Thang" & i).Rows("5:100").Clear
    Sheet1.Range("Data1").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
    "T1:T2"), CopyToRange:=Sheets("Thang" & i).[A5]
Next
End Sub
 

File đính kèm

Upvote 0
sao em download file trên về rồi bấm nút sau đó sang sheet tháng 3 thì nó trống lỗng vậy anh? cell V2 hiện chữ #name#!
 
Lần chỉnh sửa cuối:
Upvote 0
Trước tiên, xem ô V2 có bị lỗi Name hay không đã.
Nếu lỗi, phải cài addin Analysis Toolpak
Nếu không có đĩa cài
sửa V2
thành

V2 =DATE(YEAR(W2);MONTH(W2)-1;21)
 
Upvote 0
Trước tiên, xem ô V2 có bị lỗi Name hay không đã.
Nếu lỗi, phải cài addin Analysis Toolpak
Nếu không có đĩa cài
sửa V2
thành

V2 =DATE(YEAR(W2);MONTH(W2)-1;21)
Anh ơi! Cái này nó bị lỗi 1 chút ạ! Sao sau khi lọc xong, qua mấy cái sheet tháng thì cột H và cột D giống nhau y chang vậy anh? Trong khi đó sheet1 thì 2 cột này là 2 giá trị khác nhau anh ơi!
Xin chân thành cảm ơn anh nhiều!
 
Lần chỉnh sửa cuối:
Upvote 0
Lý do tiêu đề trùng. Cái này là lỗi do tôi.

Bây giờ bạn unhide dòng 5 sheet1
đánh số dòng 5 theo hàng ngang từ 1 đến hết thay cho các tiêu đề.
Các sheet khác khỏi sửa.
 
Upvote 0
Web KT

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

Back
Top Bottom