anhtotbung35
Thành viên hoạt động



- Tham gia
- 16/2/09
- Bài viết
- 149
- Được thích
- 26
- Nghề nghiệp
- Kế toán
Hướng dẩn bạn cách dùng Advanced FilterNhờ các bạn giúp mình viết đoạn code tự động copy dữ liệu sang sheet khác hoặc sang file khác. Mình có kèm theo file và mô tả công việc.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CrRng As Range
If Not Intersect(Range("C1:C2"), Target) Is Nothing Then
Range("A4:G1000").Clear
Set CrRng = Range("C1:C2")
With Sheets("Data")
With .Range(.[A1], .[A65536].End(xlUp)).Resize(, 7)
.AdvancedFilter 2, CrRng, Range("A4")
End With
End With
Range([A4], [A65536].End(xlUp)).Resize(, 2).Offset(, 3).Delete 1
End If
End Sub
Cảm ơn Anh Ndu, nhưng mình muốn khi cập nhật vào Sheet Data thì Sheet Detail sẽ tự cập nhật luôn theo điều kiện đã chọn tại cell C1.Hướng dẩn bạn cách dùng Advanced Filter
Tôi chỉ cần 2 sheet, 1 sheet Data là nơi nhập liệu và sheet Detail để bạn trích xuất dữ liệu ---> Cần trích tài khoản nào thì chọn vào Validation tại cell C1... và khi không cần trích thì chọn giá trị None tại cell C2 (lúc này toàn bộ dữ liệu lọc sẽ được xóa hết) ---> Như vậy bạn sẽ không lo việc tốn hao dung lượng (khỏi cần trích sang file khác)
Code chỉ thế này:
Mời xem file và cho biết ý kiếnPHP:Private Sub Worksheet_Change(ByVal Target As Range) Dim CrRng As Range If Not Intersect(Range("C1:C2"), Target) Is Nothing Then Range("A4:G1000").Clear Set CrRng = Range("C1:C2") With Sheets("Data") With .Range(.[A1], .[A65536].End(xlUp)).Resize(, 7) .AdvancedFilter 2, CrRng, Range("A4") End With End With Range([A4], [A65536].End(xlUp)).Resize(, 2).Offset(, 3).Delete 1 End If End Sub
Nó có cập nhất đấy!Cảm ơn Anh Ndu, nhưng mình muốn khi cập nhật vào Sheet Data thì Sheet Detail sẽ tự cập nhật luôn theo điều kiện đã chọn tại cell C1.
Bạn có thể giúp mình luôn được không, vì mình có các sheet khác lấy dữ liệu từ sheet này. Nếu như vậy để các số liệu sheet khác chính xác thì mỗi lần như vậy phải chọn Validation, thấy bất tiện lắm.Nó có cập nhất đấy!
Đương nhiên nó chỉ cập nhật khi bạn chọn Validation thôi ---> Và tôi nghĩ thế là quá đủ
Bạn có thể dùng sự kiện Worksheet_Activate để mỗi khi chọn vào sheet Detail thì nó sẽ chạy lại code Advanced FilterBạn có thể giúp mình luôn được không, vì mình có các sheet khác lấy dữ liệu từ sheet này. Nếu như vậy để các số liệu sheet khác chính xác thì mỗi lần như vậy phải chọn Validation, thấy bất tiện lắm.
Sub AdFilter()
Dim CrRng As Range
Sheets("Detail").Range("A4:G1000").Clear
Set CrRng = Sheets("Detail").Range("C1:C2")
With Sheets("Data")
With .Range(.[A1], .[A65536].End(xlUp)).Resize(, 7)
.AdvancedFilter 2, CrRng, Sheets("Detail").Range("A4")
End With
End With
With Sheets("Detail")
.Range(.[A4], .[A65536].End(xlUp)).Resize(, 2).Offset(, 3).Delete 1
End With
End Sub
Private Sub Worksheet_Activate()
AdFilter
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("C1:C2"), Target) Is Nothing Then
AdFilter
End If
End Sub
Cảm ơn anh Ndu, trong bài này thì anh dùng Worksheet_Activate, như từ đầu mình nói sheet này sẽ được ẩn. Như vậy thì dữ liệu này sẽ không được update nếu mình không click vào Sheet Detail. Làm phiền anh một lần nữa nhé. Hỏi càng rõ, càng dễ hiểu. Anh thông cảm nhé.Bạn có thể dùng sự kiện Worksheet_Activate để mỗi khi chọn vào sheet Detail thì nó sẽ chạy lại code Advanced Filter
End Sub[/PHP]
Theo Tôi nghĩ Bạn nhập dữ liệu bên sheet data, sau đó muốn trích lọc sang những sheet khác với mục đích Báo cáo, in ấn...gì gì đó?Cảm ơn anh Ndu, trong bài này thì anh dùng Worksheet_Activate, như từ đầu mình nói sheet này sẽ được ẩn. Như vậy thì dữ liệu này sẽ không được update nếu mình không click vào Sheet Detail. Làm phiền anh một lần nữa nhé. Hỏi càng rõ, càng dễ hiểu. Anh thông cảm nhé.
Cảm ơn bạn đã gợi ý. Hình như cái Sub AdFilter() mình đã đọc ở diễn đàn rồi. Mình sẽ nghiên cứu thêm.Thì bạn cho nó vào 1 cái nút gì đó hay phím tắt để gọi cái Code Sub AdFilter()
Ndu viết vậy là "nha nhá" cho bạn hiểu thôi còn dùng thế nào thì phải tuỳ vào yêu cầu của bạn chứ?
Cảm ơn bạn đã gợi ý. Hình như cái Sub AdFilter() mình đã đọc ở diễn đàn rồi. Mình sẽ nghiên cứu thêm.
Nhờ các bạn giúp mình viết đoạn code tự động copy dữ liệu sang sheet khác hoặc sang file khác. Mình có kèm theo file và mô tả công việc.
Hoàn toàn có thể bạn à! Nếu làm bằng tay thì sẽ:Cảm ơn anh Ndu rất nhiều về chủ đề này. E đang hoàn thiện chương trình quản lý điểm của tiểu học, phần trích lọc của anh tuyệt quá nhưng e vẫn chưa làm được. Anh cho em hỏi có thể dùng advanced filter để lọc từ file A sang file B được không?
Giúp em nhé
mail: tb3179@gmail.com