I'm a fan of using AutoFilter to move all appropriate rows in a single pass, so this non-looping method is one I would employ. (note, your sample sheet has a lot of hidden data way down the sheet, so clear all that in columns A:G before trying this:
Option Explicit
Sub CopyRows()
Dim LR As Long, BR As Long, NR As Long
With Sheets("Project Pipeline")
.AutoFilterMode = False
LR = .Range("A" & .Rows.Count).End(xlUp).Row
.Range("I2:I" & LR).FormulaR1C1 = "=OR(OR(LEFT(RC6,1)={""C"",""H"",""N""}, RC6=""TBD""))"
.Range("I:I").AutoFilter Field:=1
.Range("I:I").AutoFilter Field:=1, Criteria1:=True
BR = .Range("A" & .Rows.Count).End(xlUp).Row
If BR > 1 Then
NR = Sheets("Project Tracker").Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A2:D" & BR & ",F2:G" & BR).Copy Sheets("Project Tracker").Range("A" & NR)
End If
.AutoFilterMode = False
.Range("I:I").ClearContents
End With
End Sub
Bookmarks