Sub FormulaeAddandDeleteRows(sht) 'find extent of data on the fees sheet and create formula refs to be used later: With Sheets("Fees") Set rngFees = Intersect(.UsedRange, .UsedRange.Offset(1)) 'databody - excludes headers. End With ColmAAddress = rngFees.Columns(1).Address(ReferenceStyle:=xlR1C1, external:=True) ColmCAddress = rngFees.Columns(3).Address(ReferenceStyle:=xlR1C1, external:=True) ColmDAddress = rngFees.Columns(4).Address(ReferenceStyle:=xlR1C1, external:=True) 'find extent of data on the current sheet: With sht Set myRng = Intersect(.UsedRange, .UsedRange.Offset(1)) 'databody - excludes headers. 'Column Q,R & S formulae insert (you could do all this in one column with a longer formula): Intersect(myRng.EntireRow, .Range("Q:Q")).FormulaR1C1 = "=XLOOKUP(RC8," & ColmAAddress & "," & ColmCAddress & ")" Intersect(myRng.EntireRow, .Range("R:R")).FormulaR1C1 = "=XLOOKUP(RC8," & ColmAAddress & "," & ColmDAddress & ")" Select Case sht.Name Case "101 to 1000" Intersect(myRng.EntireRow, .Range("S:S")).FormulaR1C1 = "=AND(RC[-2]>0,RC[-1]=0)" Case "1001 to 3000" Intersect(myRng.EntireRow, .Range("S:S")).FormulaR1C1 = "=AND(RC[-2]>0,RC[-1]>0)" Case Else Intersect(myRng.EntireRow, .Range("S:S")).FormulaR1C1 = "=AND(RC[-2]=0,RC[-1]=0)" End Select 'filter for FALSE: .UsedRange.AutoFilter Field:=19, Criteria1:="FALSE" On Error Resume Next myRng.SpecialCells(xlCellTypeVisible).EntireRow.Delete On Error GoTo 0 .ShowAllData '.Range("Q:S").Delete 'if you want. End With End Sub