Lọc dữ liệu bị lỗi khi chọn khác ngày bắt đầu (2 người xem)

  • Thread starter Thread starter coiha
  • Ngày gửi Ngày gửi

Người dùng đang xem chủ đề này

coiha

Thành viên mới
Tham gia
27/11/14
Bài viết
28
Được thích
6
File tôi có sheet “VC” là sheet dữ liệu. Tôi lọc dữ liệu từ sheet này sang các sheet khác thì bị tình trạng như thế này:
Ví dụ:
Tôi muốn lọc dữ liệu từ ngày 01/01/14 đến này 03/04/14 theo 3 dạng khác nhau (đầy đủ, rút gọn một phần và rút gọn nhiều) thì luôn bị tình trang là số liệu có thể lần đầu là đúng, các lần sau là nó sai khác, ngoài khoảng mình cần lọc.
Nhưng cũng kiểu lọc trên, tôi cho thay đổi ngày bắt đầu không phải là ngày 1/1/14 nữa mà là các ngày khác (ở các dòng trong sheet VC mà tôi để chữ đỏ) thì không bị lỗi nữa
Mong các bác xem giúp khắc phục cho tôi với.
À, nếu có thể gộp cả 3 sheet LocVC1, LocVC2, LocVC3 lại thành một LocVC mà vẫn lọc được dữ liệu bình thương không các bác nhỉ?
 

File đính kèm

Ui, vẫn chưa có bác nào góp ý cả. Vừa mò. vừa tiếp tục chờ vậy
 
Upvote 0
Tôi vừa thử lại số liệu.
Nếu thêm ngày của năm 2015 (ví dụ là 01/01/15) vào mí dòng cuối thì lọc rất bình thường.
Là sao vậy nhỉ?
 

File đính kèm

Upvote 0
(1) Đầu tiên bạn chạy thử macro này trên trang tính:
PHP:
Sub ThuNghiêm()
 MsgBox Format(DateValue("1/13/2014"), "MM/DD/yyyy"), , DateValue("1/13/2014")
End Sub
& tự rút ra kết luận nha;

(2) Trong fương thức FIND() mà bạn áp dụng, có 1 số vấn đề này mình muốn bày tỏ với bạn trong câu lệnh của bạn:
PHP:
Cells.Find(what:=cr1, after:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
      SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate

2.1 Ta không nên bắt macro tìm toàn vùng (Cells) như thế; Chỉ nên bắt nó tìm tại trường/cột nào đó thôi.
Cụ thể hơn sẽ nhanh & chính xác hơn., như tìm chỉ các ô có dữ liệu trên cột [A:A]:
Mã:
1 Dim Rng As Range, sRng As Range
2 Dim MyFormat As String

3 Set Rng=Range([A1], [A65535].End(xlUp))
4 Set sRng=Rng.Find(. . . ,. . . .,. . . )

2.2 Khi cần tìm dữ liệu kiểu ngày/tháng cần chí ít 2 động tác như sau:

2.2.1 Vùng cần tìm fải được đỉnh dạng chỉ 1 kiểu bắt buộc "MM/DD/YYYY"
Như macro trên cần thêm các dòng lệnh sau:
Mã:
3
30 MyFormat = Rng.NumberFormat                               'Lưu Định dạng hiện hữu vô biến'
31 Rng.NumberFormat = "MM/DD/YYYY"
4
. . . .
 Rng.NumberFormat= MyFormat      'Trả dịnh dạng cũ cho cột dữ liệu'
 End Sub

2.2.2 Ngày-Tháng mà ta cần đi tìm cũng fải định dạng về kiểu của chuẩn (mm/dd/yyyy), như sau
PHP:
4 Set sRng= Rng.Find(Format(DateValue,"MM/dd/YYYY"),. . . .

(3) Nếu là mình thì mình sẽ chọn theo hướng AdvancedFilter
--=0 --=0 --=0
 
Upvote 0
Dạ, cảm ơn bác SA_DQ đã chỉ điểm rất cụ thể và rõ ràng. Qua đó, tôi đã vỡ lẽ ra được nhiều điều.
 
Upvote 0

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

Back
Top Bottom