Nhờ các bạn trong forum giúp mình bài tập lọc nhiều điều kiện này nhé (1 người xem)

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

leduongqnh

Thành viên mới
Tham gia
14/9/09
Bài viết
9
Được thích
1
Mình đã làm thử. Nhưng nếu lọc bằng auto filter thì mất nhiều thời gian. Mình muốn tạo một phím combo để khi ấn vào phím đó sẽ tự lọc cho mình chỉ việc in dữ liệu. Dưới đây là file mẫu mình đính kèm. Xin cảm ơn
 

File đính kèm

Mình là bằng macro sự kiện

Nếu ưng thì xài tạm nha!

@#!^% @#!^% @#!^%
 

File đính kèm

Nếu ưng thì xài tạm nha!

@#!^% @#!^% @#!^%
Bác Sa cho em hỏi một chút về AdvancedFilter 2, vì sao chạy code không ra kết quả ạ:
[gpecode=vb]
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "F1" Then
[B3:F20].AdvancedFilter 2, [H1:H2], [I3:M3]
End If
Application.ScreenUpdating = True
End Sub
[/gpecode]
Với H1: Thanh toan, H2: >0
 
Lần chỉnh sửa cuối:
Trước tiên xin cảm ơn bạn đã giúp đỡ. Nhưng cách của bạn mới lọc được những mặt hàng có doanh số. Chưa lọc được khu vực theo yêu cầu 2 là lọc khu vực nữa. Ở bài của bạn điều kiện là J2 trong vùng lọc là H44 đến H59
 
Lần chỉnh sửa cuối:
Bác Sa cho em hỏi một chút về AdvancedFilter 2, vì sao chạy code không ra kết quả ạ:
Đã tìm ra chỗ sai: Target.Address = "$F$1"
Có thể sử dụng Change:
[gpecode=vb]
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "$F$1" Then
[H3:L20].Clear
[B3:F20].AdvancedFilter 2, [H1:H2], [H3:L3]
Range("H3:L" & Range("L65535").End(xlUp).Row).Borders.LineStyle = 1
End If
Application.ScreenUpdating = True
End Sub
[/gpecode]
 

File đính kèm

Bác cho em hỏi một chút về AdvancedFilter 2, sao code không ra kết quả ạ:
[gpecode=vb]
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address = "F1" Then
[B3:F20].AdvancedFilter 2, [H1:H2], [I3:M3]
End If
Application.ScreenUpdating = True
End Sub
[/gpecode]
Với H1: Thanh toan, H2: >0

(*) VBA chưa cho rằng "F1" là 1 địa chỉ ô;

(*) Viết kiểu này không fải lúc đâu nha chú, sau này hẵn hay!
[thongbao]
[B3:F20].AdvancedFilter 2, [H1:H2], [I3:M3]
[/thongbao]
 
Trước tiên xin cảm ơn bạn đã giúp đỡ. Nhưng cách của bạn mới lọc được những mặt hàng có doanh số. Chưa lọc được khu vực theo yêu cầu 2 là lọc khu vực nữa. Ở bài của bạn điều kiện là J2 trong vùng lọc là H44 đến H59
Nếu ưng thì xài tạm nha!

@#!^% @#!^% @#!^%
 
Hi vọng lần này đúng í bạn!

[ThongBao]. . .. Nhưng cách của bạn mới lọc được những mặt hàng có doanh số. Chưa lọc được khu vực theo yêu cầu 2 là lọc khu vực nữa. Ở bài của bạn điều kiện là J2 trong vùng lọc là H44 đến H59[/Thongbao]
 

File đính kèm

Lần chỉnh sửa cuối:
Cảm ơn bạn nhiều

[ThongBao]. . .. Nhưng cách của bạn mới lọc được những mặt hàng có doanh số. Chưa lọc được khu vực theo yêu cầu 2 là lọc khu vực nữa. Ở bài của bạn điều kiện là J2 trong vùng lọc là H44 đến H59[/ThongBao]
Bạn có thể nói rõ giúp mình cách làm được không? Như file của bạn mẫu là được rồi. Cảm ơn bạn nhiều
 
Sơ bộ là như thế này:

Macro làm 2 fần việc

F1: Căn cứ vô số liệu tại [F1], macro sang trang 'T10' & tìm tại cột 'B' giá trị này;
Khi tìm ra thì duyệt toàn bộ các ô bên fải của ô tìm được này;
Khi duyệt, nếu gặp ô nào có trị > 0 thì chép số liệu tương ứng vô dòng mới của vùng [C4:F22]
Sau khi duyệt & chép xong thì tìm dòng cuối có dữ liệu của vùng này & cho ẩn các dòng trống không cần thiết.
(Tất nhiên vô đầu chương trình, macro sẽ cho hết ẩn các dòng trong vùng này & xóa kết quả do lần chạy macro trước. Tuy nhiên nếu viết fía trên thì bạn sẽ bị chưng hửng!)

F2: Bằng fương thức FIND() tìm trong vùng chứa dữ liệu khu vực bán (K50:H67);
Khi tìm thấy thì chép dữ liệu đến nới cần thiết dòng tìm được;

Hi vọng giúp được bạn ít nhiều!
 
Cảm ơn các bạn đã quan tâm giúp đỡ mình.

Mình đã thử làm nhiều lần nhưng không được. Mình sẽ up file gốc. Các bạn có thể hướng dẫn mình cụ thể từng bước. Vì mình không biết nhiều exel. Xin cảm ơn
 

File đính kèm

Lần chỉnh sửa cuối:
Thử code này, nếu không được xem file

[GPECODE=vb]
Sub InDS()
With Sheets("In").Range("B3:L34")
.Parent.AutoFilterMode = False
.AutoFilter 11, "=*" & [N1] & "*"
.Offset(-2).Resize(.Rows.Count + 2, .Columns.Count - 1).PrintOut
.Show
.Parent.AutoFilterMode = False
End With
End Sub
[/GPECODE]
 

File đính kèm

Mình Cảm ơn bạn nhiều. Có thể đặt một phím combo tên là lọc để ấn vào đó thì sẽ lọc không? Sau đó mình lệnh in. Chứ chạy macro như vậy nhiều lúc mình không kịp view bạn ạ
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom