Lại copy dữ liệu sang sheet khac sau khi autofilter (1 người xem)

Liên hệ QC

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

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
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.
 

File đính kè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.
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:
PHP:
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
Mời xem file và cho biết ý kiến
 

File đính kèm

Upvote 0
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:
PHP:
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
Mời xem file và cho biết ý kiến
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.
 
Upvote 0
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.
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á đủ
 
Upvote 0
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ể 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.
 
Upvote 0
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.
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
Cụ thể là:
1> Cho code này vào Module
PHP:
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

2> Cho code này vào sheet Detail

PHP:
Private Sub Worksheet_Activate()
  AdFilter
End Sub
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Range("C1:C2"), Target) Is Nothing Then
    AdFilter
  End If
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
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]
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é.
 
Upvote 0
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é.
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ì đó?
=> Như vậy trước sau gì Bạn cũng phải vào những sheet đó để xem chứ? không ai tạo ra sheet đó để ẩn chơi. Mà khi mở chọn đến sheet đó nó cũng sẽ tự động cập nhật và trích lọc rồi.
 
Upvote 0
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ứ?
 
Upvote 0
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.
 
Upvote 0

File đính kèm

Upvote 0
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
 
Upvote 0
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
Hoàn toàn có thể bạn à! Nếu làm bằng tay thì sẽ:
- Mở 2 workbook A và B
- Đứng tại Workbook B, vào menu Data\Filter\Advanced Filter và chọn List Range từ Workbook A
Bạn làm thử xem! Điều ta đặc biệt chú ý là: Dữ liệu sau khi lọc đặt tại đâu thì ta phải "đứng" tại nơi đó để gọi Advanced Filter
 
Upvote 0
Web KT

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

Back
Top Bottom