Code Ẩn dòng theo điều kiện ngày tháng! (1 người xem)

Liên hệ QC

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

hoanglocphat

Thành viên thường trực
Tham gia
27/1/13
Bài viết
258
Được thích
30
Chào các bạn
Tôi thường làm việc với ngày tháng, và chọn 1 tháng để làm việc, nhưng bảng tính của tôi quá dài nên việc di chuyển đến các hàng trong bảng tính làm việc thì gặp nhiều khó khăn
Ví dụ: Từ B7:B10000 là ngày tháng, mình muốn làm việc tháng 2, bây giờ mình đặt cell B3 =2, và bấm code, như vậy các hàng trong cột B khác với tháng 2 thì bị ẩn đi, chỉ còn chừa các hàng mà cột B có tháng 2 hoặc hàng trống
Và các bạn cũng giúp code cho hiện trở lại các dòng ẩn luôn
Cảm ơn các bạn!
 

File đính kèm

Chào các bạn
Tôi thường làm việc với ngày tháng, và chọn 1 tháng để làm việc, nhưng bảng tính của tôi quá dài nên việc di chuyển đến các hàng trong bảng tính làm việc thì gặp nhiều khó khăn
Ví dụ: Từ B7:B10000 là ngày tháng, mình muốn làm việc tháng 2, bây giờ mình đặt cell B3 =2, và bấm code, như vậy các hàng trong cột B khác với tháng 2 thì bị ẩn đi, chỉ còn chừa các hàng mà cột B có tháng 2 hoặc hàng trống
Và các bạn cũng giúp code cho hiện trở lại các dòng ẩn luôn
Cảm ơn các bạn!
Bạn có thể gõ vào cell B2 công thức =OR(MONTH($B7)=$B$3,LEN($B7)=0) rồi dùng Advanced Filter để lọc
Code:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range, rCrit As Range
  On Error Resume Next
  If Target.Address = "$B$3" Then
    Set rng = Range("B6:B1000")
    Set rCrit = Range("B1:B2")
    rCrit(2, 1).Value = "=OR(MONTH($B7)=$B$3,LEN($B7)=0)"
    rng.AdvancedFilter 1, rCrit
    Target.Select
  End If
End Sub
Hoặc tổng quát hơn 1 chút:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range, rCrit As Range
  Dim sFirst As String
  If Target.Address = "$B$3" Then
    Set rng = Range("B6:B1000")
    Set rCrit = Range("B1:B2")
    sFirst = rng(2, 1).Address(0, 1)
    rCrit(2, 1).Value = "=OR(MONTH(" & sFirst & ")=" & Target.Address & ",LEN(" & sFirst & ")=0)"
    rng.AdvancedFilter 1, rCrit
    Target.Select: rCrit.ClearContents
  End If
End Sub
Đoạn Set rCrit = Range("B1:B2") bạn có thể sửa lại thành vùng nào tùy thích (ví dụ: Set rCrit = Range("IV1:IV2") cũng được)
 
Lần chỉnh sửa cuối:
Upvote 0
Mình làm thêm nút lọc theo tháng, ban xem thử đúng ý không nha.
Mong làm quen với tất cả mọi người.
 

File đính kèm

Upvote 0

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

Back
Top Bottom