That should teach me to test all situations
Sub test()
Dim c As Range
Dim SrchRng
Dim rng As Range
Dim aRng As Range
Dim rowCnt As Long
Dim lastrow As Long
'Sorts rows based lowest to highest in column B
Range("B2").CurrentRegion.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess
Application.ScreenUpdating = False
'If column C has a 1 in it then copy the row to next avaliable place in sheet 2
With Worksheets("Sheet1")
lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
Set rng = .Range("A1").Resize(lastrow, 3)
rng.AutoFilter field:=3, Criteria1:=1
Set rng = rng.SpecialCells(xlCellTypeVisible)
For Each aRng In rng.Areas
rowCnt = rowCnt + aRng.Rows.Count
Next aRng
rng.AutoFilter
If rowCnt > 1 Then
rng.Copy Destination:=Worksheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
Application.ScreenUpdating = True
'If columnC has a 1 in it delete that row
Set SrchRng = .Range("C1", .Cells(.Rows.Count, "C").End(xlUp))
Do
Set c = SrchRng.Find("1", LookIn:=xlValues)
If Not c Is Nothing Then c.EntireRow.Delete
Loop While Not c Is Nothing
End If
End With
End Sub