Code để lọc theo nhiều điều kiện

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài
Bác thật là tâm lý.
Em đã thử thành công, tuy nhiên, em muốn ngày nó phải là dạng ngày chứ không phải số 455xx như kia.
Advance filter lọc được bằng text mà code phải dùng số.
Vậy cách xử lý sao để nó vẫn hiện ngày dạng dd/mm/yy mà code vẫn chạy bác nhỉ?
 
Advance filter lọc được bằng text mà code phải dùng số. (1)
Vậy cách xử lý sao để nó vẫn hiện ngày dạng dd/mm/yy mà code vẫn chạy bác nhỉ? (2)
(1) Code cũng advanced filter chứ là gì? Excel khác VBA, thế thôi.
(2) Tự tìm hiểu đi, và đừng đổ thừa như đổ thừa name.
 
Mã:
Sub zzz2()
Dim arr()
arr = Range("_loc").Value
For dong = LBound(arr, 1) + 1 To UBound(arr, 1)
      For Cot = LBound(arr, 2) To UBound(arr, 2)
         If arr(dong, Cot) <> "" Then
            arr(dong, Cot) = Left(arr(dong, Cot), 2) & CLng(CDate(Mid(arr(dong, Cot), 3, 10)))
         End If
      Next Cot
   Next dong
   
    Range("_BANG").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=arr, Unique:=False
End Sub
Bác xem có cách nào để cho Điều kiện là arr mà AdvancedFilter hiểu được không ạ?
 
Thì nó là text nên em phải chuyển sang số, nhưng lại bị lỗi 1004.
Đối với dữ liệu dạng ngày:
Excel và VBA khác nhau ở việc nhận dạng dd/mm và mm/dd hoặc nhận dạng giá trị text kiểu này (bị rồi nhé)
Nhưng Excel và VBA giống nhau ở 2 điểm:
1. Nhận giá trị như nhau nếu chuyển thành số
2. Tìm tiếp
 
Lần chỉnh sửa cuối:
Đối với dữ liệu dạng ngày:
Excel và VBA khác nhau ở việc nhận dạng dd/mm và mm/dd hoặc nhận dạng giá trị text kiểu này (bị rồi nhé)
Nhưng Excel và VBA giống nhau ở 2 điểm:
1. Nhận giá trị như nhau nếu chuyển thành số
2. Tìm tiếp
1. Số thì nó lọc đúng rồi nhưng em không muốn hiển thị trên excel là số, phải là ngày cho dễ nhìn. Do đó, trong VBA thì số ngày miễn sao chạy được là được, nhưng em đang vướng cho filter nó hiểu được array so sánh lớn nhỏ thế kia.
2. Chịu luôn, em đã sử dụng hết các kỹ thuật tìm kiếm đỉnh cao.
 
Đối với dữ liệu dạng ngày:
Excel và VBA khác nhau ở việc nhận dạng dd/mm và mm/dd hoặc nhận dạng giá trị text kiểu này (bị rồi nhé)
...
Tôi có nói chuyện này rồi. Và người hỏi trên có chen vào hỏi, nhưng có lẽ không nhớ.
Hàm CDate trong VBA thuộc về nhóm hàm xác định kiểu dữ liệu và cũng như mọi hàm khác trong nhóm, chúng có khả năng ép kiểu (type coercion)
Tyoe coercion tuy rất hiệu quả nhưng cũng đi kèm theo luật của nó. Không đề phòng thì dữ liệu sai như chơi.
1725772005325.png
Như ví dụ, máy của tôi mặc định ngày theo kiểu Âu cho nên VBA sẽ chọn kiểu Âu, không được thì chọn Mẽo, nếu thất bại nữa thì Error - Type Mismacth

Hàm DateValue thì bảng tính và VBA cho ra kết quả khác nhau!
 
Dù cho chuyển thành số sẵn từ Excel cũng cóc chạy với array chứ đừng nói chuyển đổi qua số bằng code. Vấn đề là advanced filter trong VBA cóc chịu Array Criteria.
Điểm giống nhau thứ 2 của Excel và VBA khi nhận giá trị ngày từ text là text phải được định dạng yyyy/mm/dd.
Như ảnh sau thì VBA chạy tốt, kể range và name.

1725773634803.png

Mà hiển thị cái quái gì chẳng được, khi mà có thể định dạng chữ trắng để giấu đi?
 
Lần chỉnh sửa cuối:
2. Chịu luôn, em đã sử dụng hết các kỹ thuật tìm kiếm đỉnh cao.
Tìm kiếm không ra rồi tự thử không có kế hoạch. Trước khi đúc 1 cái bàn bằng sắt để thả nổi trong hồ bơi, thì tự thử quăng 1 cục sắt xuống xem nổi hay chìm. Sai ngay từ ý tưởng thì có hì hục trăm ngàn cách cũng vất đi, rồi lại đổ thừa tại cái khuôn đúc.
 
Tôi có nói chuyện này rồi. Và người hỏi trên có chen vào hỏi, nhưng có lẽ không nhớ.
Hàm CDate trong VBA thuộc về nhóm hàm xác định kiểu dữ liệu và cũng như mọi hàm khác trong nhóm, chúng có khả năng ép kiểu (type coercion)
Tyoe coercion tuy rất hiệu quả nhưng cũng đi kèm theo luật của nó. Không đề phòng thì dữ liệu sai như chơi.
View attachment 303761
Như ví dụ, máy của tôi mặc định ngày theo kiểu Âu cho nên VBA sẽ chọn kiểu Âu, không được thì chọn Mẽo, nếu thất bại nữa thì Error - Type Mismacth

Hàm DateValue thì bảng tính và VBA cho ra kết quả khác nhau!
Em có đọc bài đấy mà, em còn bảo hàm cdate nó loạn cào cào. Rồi em áp dụng hết cả dateserial, lập một cái file excel đầy màu sắc. Và cuối cùng là không đến hồi kết.

Còn bài của tôi trả lời thì không đọc, chắc là tôi tự xóa.
Hiện giờ em đang bí cái bài này. Khả năng phải đăng vào chủ đề mới nhờ các bác code cho.
 
Vậy tôi xóa bài 30 và 31
 
Vậy tôi xóa bài 30 và 31
Thực sự là giờ phải có kết quả cuối cùng thì em mới hiểu được, em chịu, không biết cách làm thế nào luôn. :wallbash::wallbash::wallbash:
Em muốn cho nó cái code để bấm 1 phát, chứ mỗi lần phải lọc advanced filter lười quá. Em đã code để siêng hơn nhưng siêng khó quá.
 
Chạy nhưng rất xấu khi mà cả đống dòng dưới nó là dmy rồi bác. Giờ làm sao để vẫn ngày tháng năm như bên ta mà advanced filter hiểu được.

Đây có thể gọi là cái vấn đề xy róp lầm. Em có x, liệu có cách y=f(x) không?
 
Đơn giản thôi mà, một vùng để hiển thị cho trực quan một vùng làm điều kiện cho Advance filter. Xã hội bây giờ cũng vậy thôi, ai cũng có ít nhất một cái mặt nạ.
Vậy tức là không có cách nào advanced filter dạng ngày Việt Nam luôn trong code hả bác? Chỉ có thể:
1 là phải dùng ngày kiểu Mỹ.
2 là phải dùng 2 bảng điều kiện.
3 là hết cách...
 
Web KT

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

Back
Top Bottom