Este código VBA funcionará:
Public Sub quantityProducts()
'**********************
' variables
sourceSheet = "Sheet1" 'name of the source sheet
destSheet = "Sheet2" 'name of the destination sheet
titleRow = 1 ' Number of Title Row
firstRowSource = 2 ' First row of source data
firstRowDest = 2 'First row of data in destination sheet
copyTitleRow = True 'Should be title row be copied? True / False
columnToCheck = 3 'Column that defines if the row must be copied
'**********************
Dim wkb As Workbook
Dim wks, wks1 As Worksheet
Set wkb = ThisWorkbook
Set wks = wkb.Worksheets(sourceSheet)
Set wks1 = wkb.Worksheets(destSheet)
wks1.Rows.Clear ' Clear the contents of destination sheet
If copyTitleRow = True Then 'If title row must be copied
wks.Rows(titleRow).Copy Destination:=wks1.Rows(titleRow)
End If
totalrows = wks.Cells(Rows.Count, 1).End(xlUp).Row ' total rows in source
destRow = firstRowDest
For i = firstRowSource To totalrows ' iterate through rows
If wks.Cells(i, columnToCheck) <> "" Then ' If cell in column to check isn't empty
wks.Rows(i).Copy Destination:=wks1.Rows(destRow) ' Copy from source to destination
destRow = destRow + 1 ' Increase value of destination row
End If
Next i
a = MsgBox("Finished. Copied " & destRow - firstRowDest & " rows", vbOKOnly)
End Sub
Abra VBA / Macros com ALT + F11 , em ThisWorkbook insira um novo módulo e cole o código no lado direito.
Verifique se os valores atribuídos às variáveis correspondem às suas planilhas e execute-as clicando no triângulo verde.
Eu coloco comentários no código para que você entenda como funciona.
Você pode executá-lo também passo a passo, clicando na primeira linha e, em seguida, percorrer cada passo pressionando F8 .