With advanced filter:
Sub CreatePassOnAdvFilter()
Dim wb As Workbook, wsSource As Worksheet, wsTarget As Worksheet
Dim columnsToKeep() As Variant, colm As Long, v, Destn As Range, CritRangeTopLeft As Range, CritRangeBottomRight As Range, CritRange As Range
Dim lastColumnSource As Long, lastRowSource As Long, filterRange As Range
Const filterField1 As Long = 8
Const filterField2 As Long = 27
Const criterion1 As String = "QC-Completed"
Const criterion2 As String = vbNullString
Set wb = ThisWorkbook
Set wsSource = wb.Worksheets("Data")
Set wsTarget = wb.Worksheets("Pass On")
On Error Resume Next: wsSource.ShowAllData: On Error GoTo 0
lastRowSource = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row
lastColumnSource = wsSource.Range("A1").SpecialCells(xlCellTypeLastCell).Column
Set filterRange = wsSource.Range(wsSource.Cells(1, 1), wsSource.Cells(lastRowSource, lastColumnSource))
columnsToKeep = Array(13, 36, 2, 3, 24, 8, 12) 'determine output columns to keep and their order
'this next section puts the headers on row 1 of the Pass On sheet:
colm = 0
For Each v In columnsToKeep
colm = colm + 1
wsTarget.Cells(1, colm).Value = wsSource.Cells(1, v)
Next v
Set Destn = Range(wsTarget.Cells(1, 1), wsTarget.Cells(1, colm)) 'for the advanced filter later.
'Now set up Criteria range for Advanced Filter:
colm = colm + 2
wsTarget.Cells(1, colm).Value = wsSource.Cells(1, filterField1)
Set CritRangeTopLeft = wsTarget.Cells(1, colm)
wsTarget.Cells(2, colm).Value = "<>" & criterion1
colm = colm + 1
wsTarget.Cells(1, colm).Value = wsSource.Cells(1, filterField2)
wsTarget.Cells(2, colm).Value = "=" & criterion2
Set CritRangeBottomRight = wsTarget.Cells(2, colm)
Set CritRange = Range(CritRangeTopLeft, CritRangeBottomRight)
'Now do the filtering:
filterRange.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=CritRange, CopyToRange:=Destn, Unique:=False
'tidy up:
CritRange.Clear
End Sub