Code filter và ẩn cột có điều kiện

Liên hệ QC

tuyen2806

Thành viên mới
Tham gia
17/4/20
Bài viết
40
Được thích
7
Chào các Bác,

Em muốn viết 1 đoạn code VBA để filter và ẩn cột theo điều kiện
Em không rành VBA, làm hoài không xong
Ngoài ra em muốn đếm dữ liệu theo điều kiện khi filter

Em có ghi comment về yêu cầu trong file đính kèm
Mong các Bác giúp hộ em ạ
Cảm ơn
 

File đính kèm

  • Hidrow.xlsb
    82.9 KB · Đọc: 6
Chào các Bác,

Em muốn viết 1 đoạn code VBA để filter và ẩn cột theo điều kiện
Em không rành VBA, làm hoài không xong
Ngoài ra em muốn đếm dữ liệu theo điều kiện khi filter

Em có ghi comment về yêu cầu trong file đính kèm
Mong các Bác giúp hộ em ạ
Cảm ơn
Dùng thử code này xem có đúng yêu cầu chưa.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
    Dim Rng As Range
    Set Rng = Range("I1,J1")
    If Not Intersect(Rng, Target) Is Nothing Then
        With ActiveSheet
            If (Target.Address(0, 0) = "I1") Then
                Application.EnableEvents = False
                If Target.Value = "ALL" Then
                    .[J1].Value = ""
                Else
                    .[J1].Value = "ALL"
                End If
                Application.EnableEvents = True
            End If
            If (Target.Address(0, 0) = "I1") Or (Target.Address(0, 0) = "J1") Then
                If .[I1] <> "ALL" Then
                    .Range("$A$3:$BQ$632").AutoFilter Field:=9, Criteria1:=.[I1]
                Else
                    .Range("$A$3:$BQ$632").AutoFilter Field:=9
                End If
                
                If (.[J1] <> "ALL") And (.[J1] <> "") Then
                    .Range("$A$3:$BQ$632").AutoFilter Field:=10, Criteria1:=.[J1]
                Else
                    .Range("$A$3:$BQ$632").AutoFilter Field:=10
                End If
            End If
        End With
    End If
End Sub
 
Upvote 0
Dùng thử code này xem có đúng yêu cầu chưa.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
    Dim Rng As Range
    Set Rng = Range("I1,J1")
    If Not Intersect(Rng, Target) Is Nothing Then
        With ActiveSheet
            If (Target.Address(0, 0) = "I1") Then
                Application.EnableEvents = False
                If Target.Value = "ALL" Then
                    .[J1].Value = ""
                Else
                    .[J1].Value = "ALL"
                End If
                Application.EnableEvents = True
            End If
            If (Target.Address(0, 0) = "I1") Or (Target.Address(0, 0) = "J1") Then
                If .[I1] <> "ALL" Then
                    .Range("$A$3:$BQ$632").AutoFilter Field:=9, Criteria1:=.[I1]
                Else
                    .Range("$A$3:$BQ$632").AutoFilter Field:=9
                End If
               
                If (.[J1] <> "ALL") And (.[J1] <> "") Then
                    .Range("$A$3:$BQ$632").AutoFilter Field:=10, Criteria1:=.[J1]
                Else
                    .Range("$A$3:$BQ$632").AutoFilter Field:=10
                End If
            End If
        End With
    End If
End Sub
Em đã chạy đoạn code này rồi và nó thực hiện ẩn/hiện đúng yêu cầu theo hàng, còn ẩn theo cột chưa được ạ (ẩn/hiện cột N2:BP2 tương ứng với J1 và dữ liệu cột J)
Nhờ Bác giúp hộ em với ạ
 

File đính kèm

  • Hidrow.xlsb
    82.1 KB · Đọc: 9
Upvote 0
Web KT

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

Back
Top Bottom