tuyen2806
Thành viên mới
- Tham gia
- 17/4/20
- Bài viết
- 40
- Được thích
- 7
Dùng thử code này xem có đúng yêu cầu chưa.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
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)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