Data Processing part 3: Một số câu lệnh VBA xử lý xóa dòng theo nhiều điều kiện, nhiều cột.

 



Ví dụ 1: Xóa những dòng chứa ô có nội dung chắc chắn có trong bảng:

ActiveSheet.Range("$A$3:$Bw$150000").AutoFilter Field:=1, Criteria1:=Array( _"ABCD", "XYZ"), Operator _:=xlFilterValues

=>filter cột A những giá trị  "ABCD" và "XYZ"

    Rows("4:150000").Select

    Range("a4").Activate

    Selection.SpecialCells(xlCellTypeVisible).Select

    Selection.Delete

    ActiveSheet.ShowAllData

=>xóa những dòng VISIBLE 

 

Ví dụ 2:Xóa theo nhiều điều kiện(chắc chắn tồn tại) ở nhiều ô khác nhau:

ActiveSheet.Range("$A$3:$BW$150000").AutoFilter Field:=3, Criteria1:= _"<>*set*", Operator:=xlAnd

    ActiveSheet.Range("$A$3:$BW$150000").AutoFilter Field:=2, Criteria1:="<>"

=>lọc những ô cột C KHÔNG contain set và những ô cột B không rỗng

Rows("4:150000").Select

    Range("b4").Activate

    Selection.SpecialCells(xlCellTypeVisible).Select

    Selection.Delete

    ActiveSheet.ShowAllData

Hoặc ngược lại:

ActiveSheet.Range("$A$3:$BW$150000").AutoFilter Field:=11, Criteria1:= _"=*set*", Operator:=xlAnd

 ActiveSheet.Range("$A$3:$BW$150000").AutoFilter Field:=2, Criteria1:="="

=> lọc những ô cột K  contain set và những ô cột B rỗng


Ví dụ 3:Xóa theo nhiều điều kiện(Không chắc sẽ tồn tại)ở nhiều ô khác nhau:

Range("c3").Select

    ActiveCell.FormulaR1C1 = "=SUBTOTAL(103,R[2]C:R[60000]C)"

=>đặt thêm hàm đếm ở một ô nào đó, nó sẽ trả về kết quả Sau khi filter theo điều kiện thì có bao nhiêu dòng hiển thị

ActiveSheet.Range("$A$4:$BY$50000").AutoFilter Field:=3, Criteria1:=Array( _

        "XX", "YY", "ZZ"), Operator _:=xlFilterValues

=>LỌC CỘT C các điều kiện :"XX", "YY", "ZZ"

    If Range("c3") > 0 Then

Rows("4:150000").Select

    Range("b4").Activate

    Selection.SpecialCells(xlCellTypeVisible).Select

    Selection.Delete

End if

    ActiveSheet.ShowAllData

=>Nếu lọc ra được dòng nào thì xóa dòng đó sau đó, không thì thôi . Sau đó Clear filter.

Nếu ko đặt đếm số dòng, sẽ bị trả về lỗi


Ví dụ 4:Lọc và bỏ công thức vào

ActiveSheet.Range("$A$4:$CS$50000").AutoFilter Field:=3, Criteria1:= _"ABC"

=>Lọc ô có nội dung ABC ở cột C

    If Range("c3") > 0 Then

=>NẾU CÓ THÌ

            Range("BI5:bi50000").Select

                Selection.SpecialCells(xlCellTypeVisible).Select

                Sheets("formula").Select

                Range("BI5").Select

                Selection.Copy

                Sheets("sheet data").Select

=>copy công thức từ ô BI5, sheet Formula paste vào cột BI

                ActiveSheet.Paste

End If


Nhận xét