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



- Tham gia
- 20/4/15
- Bài viết
- 117
- Được thích
- 17
- Nghề nghiệp
- Chuyên viên
Bạn chạy thử cái này xem saoCác bác giúp em code để các ô A1, B1, C1 khi nhập vào sẽ tự động filter giá trị cột A, B, C tương ứng; Do đặc thù nếu sử dụng filter có sẵn trong excel thì hơi tốn thời gian!
Xin cảm ơn!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Col As Long
ActiveSheet.AutoFilterMode = False
If Target.Address = "$A$1" Or Target.Address = "$B$1" Or Target.Address = "$C$1" Then
Col = Target.Column
Set Rng = Range("A1", Range("C" & Rows.Count).End(3))
Rng.AutoFilter field:=Col, Criteria1:=Cells(1, Col)
End If
End Sub
Bạn thử:Các bác giúp em code để các ô A1, B1, C1 khi nhập vào sẽ tự động filter giá trị cột A, B, C tương ứng; Do đặc thù nếu sử dụng filter có sẵn trong excel thì hơi tốn thời gian!
Xin cảm ơn!
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("A1:C1")) Is Nothing Then
abc
End If
End Sub
Sub abc()
With Sheet1
.Range("A2:A" & .Range("A" & Rows.Count).End(3).Row).AutoFilter 1, Range("A1")
.Range("A2:A" & .Range("A" & Rows.Count).End(3).Row).AutoFilter 2, Range("B1")
.Range("A2:A" & .Range("A" & Rows.Count).End(3).Row).AutoFilter 3, Range("C1")
End With
End Sub
Mỗi lần chỉ lọc được 1 cột. Ngoài ra xóa giá trị ô lọc là dữ liệu ẩn hết luôn.Bạn chạy thử cái này xem sao
PHP:Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range, Col As Long ActiveSheet.AutoFilterMode = False If Target.Address = "$A$1" Or Target.Address = "$B$1" Or Target.Address = "$C$1" Then Col = Target.Column Set Rng = Range("A1", Range("C" & Rows.Count).End(3)) Rng.AutoFilter field:=Col, Criteria1:=Cells(1, Col) End If End Sub
AutoFilter nhảy tùm lumBạn thử:
PHP:Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("A1:C1")) Is Nothing Then abc End If End Sub
PHP:Sub abc() With Sheet1 .Range("A2:A" & .Range("A" & Rows.Count).End(3).Row).AutoFilter 1, Range("A1") .Range("A2:A" & .Range("A" & Rows.Count).End(3).Row).AutoFilter 2, Range("B1") .Range("A2:A" & .Range("A" & Rows.Count).End(3).Row).AutoFilter 3, Range("C1") End With End Sub
Vậy bạn kiểm tra giúp:Mỗi lần chỉ lọc được 1 cột. Ngoài ra xóa giá trị ô lọc là dữ liệu ẩn hết luôn.
AutoFilter nhảy tùm lum![]()
Sub xyz()
With Range("A2:C202")
.AutoFilter 1, [a1]
.AutoFilter 2, [b1]
.AutoFilter 3, [c1]
End With
End Sub
Vậy Bạn sửa thành như thế này xemThêm nếu A1, B1, C1 = rỗng => Cột tương ứng được select all;
Ví dụ chỉ A1 có giá trị => chỉ lọc theo điều kiện A1 còn B1, C1 thì ko tham gia lọc; và tương tự với B1,C1
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, Col As Long, Rng1 As Range, Dk As Boolean
ActiveSheet.AutoFilterMode = False
Dk = False: Set Rng1 = Range("A1:C1")
If Not Intersect(Target, Rng1) Is Nothing Then
For Each Cll In Rng1
If Cll <> Empty Then
Col = Cll.Column
Set Rng = Range("A1", Range("C" & Rows.Count).End(3))
Rng.AutoFilter field:=Col, Criteria1:=Cells(1, Col)
Dk = True
End If
Next
If Dk = False Then ActiveSheet.AutoFilterMode = False
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim Cll As Range, Rng As Range, FilterRng As Range
Set Rng = Intersect([A1:C1], Target)
If Rng Is Nothing Then Exit Sub
If ActiveSheet.AutoFilterMode Then
Set FilterRng = ActiveSheet.AutoFilter.Range
Else
Set FilterRng = Range("A1", Cells(&H10000, 3).End(xlUp))
FilterRng.AutoFilter
End If
For Each Cll In Rng
If Cll.Value = "" Then
FilterRng.AutoFilter Cll.Column
Else
FilterRng.AutoFilter Cll.Column, Cll.Value
End If
Next
End Sub