Code Autofilter khi nhập giá trị vào 1 ô (1 người xem)

Liên hệ QC

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

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

File đính kèm

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!
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
 
Upvote 0
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!
Bạ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
 
Upvote 0
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
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 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
AutoFilter nhảy tùm lum o_O
 
Upvote 0
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 o_O
Vậy bạn kiểm tra giúp:
PHP:
Sub xyz()
    With Range("A2:C202")
        .AutoFilter 1, [a1]
        .AutoFilter 2, [b1]
        .AutoFilter 3, [c1]
    End With
End Sub
 

File đính kèm

Upvote 0
Thê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
 
Upvote 0
Thê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
Vậy Bạn sửa thành như thế này xem :p
PHP:
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
 
Upvote 0
PHP:
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
 
Upvote 0
Web KT

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

Back
Top Bottom