Requirement:
The user needs to write a macro that basically acts as a custom filter.
If column [dependent type] AND [dependent number] are empty AND [column index] is NOT equal to 1.
The user needs o delete that row from the data set.
The file the user is attaching is a smaller version of the original so the macro needs to be pretty quick.
The file is attached - please use the link below.
https://www.ozgrid.com/forum/forum/help-forums/excel-vba-macros/149939-custom-filter-using-a-macro
Solution:
Dim lRow As Long ActiveSheet.AutoFilterMode = False lRow = ThisWorkbook.Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row With ActiveSheet.Range("$A$1:$S$" & lRow) .AutoFilter Field:=19, Criteria1:="=" .AutoFilter Field:=18, Criteria1:="=" .AutoFilter Field:=17, Criteria1:="<>1" .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete End With ActiveSheet.AutoFilterMode = False
An alternative method which may be faster if your actual data is large (100,000 rows +) as it does not use filtering.
Sub DeleteRows() Dim x, i As Long With Sheets("Sheet1").Cells(1).CurrentRegion '// CHANGE SHEET NAME TO SUIT x = .Value For i = 2 To UBound(x, 1) If x(i, 17) <> 1 And x(i, 18) = "" And x(i, 19) = "" Then x(i, 17) = "" Next .Value = x .Columns(17).SpecialCells(4).EntireRow.Delete End With End Sub
Obtained from the OzGrid Help Forum.
Solution provided by nyatiaju and KjBox.
See also: Index to Excel VBA Code and Index to Excel Freebies and Lesson 1 - Excel Fundamentals and Index to how to… providing a range of solutions and Index to new resources and reference sheets
See also:
How to copy rows with filter based on values in another sheet |
How to skip VBA Code if table filter returns nothing |
How to use a macro to find value in a range of cells and combine values |
How to create a macro for saving copy as csv with incremental file number |
Click here to visit our Free 24/7 Excel/VBA Help Forum where there are thousands of posts you can get information from, or you can join the Forum and post your own questions.