Entiendo que siempre solicitarás el criterio en B1.
Imaginé una tabla donde puede haber más de 2 col como lo muestra la imagen.
La siguiente macro te devolverá los datos no vacíos en Hoja2 según lo que solicites en B1.
Sub filtroEspecial()
'x Elsamatilde
'se ejecuta desde la hoja 2
Sheets("Hoja2").Select
'si B1 está vacía no ejecuta
If [B1] = "" Then Exit Sub
'busca la col del criterio en B1
crit = [B1]
Sheets("Hoja1").Select
For x = 2 To Range("B1").End(xlToRight).Column
If Cells(1, x) = crit Then esta = 1: Exit For
Next
If esta = 0 Then
MsgBox "No se encontró columna con el criterio buscado", , "ERROR"
Exit Sub
End If
'Se filtra hoja1 por la col del criterio
'última fila con datos
filx = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.Range("$A$1:$D$" & filx).AutoFilter Field:=x, Criteria1:="<>"
'se copian las col de 'insumos' y la del crit a hoja2
Range("A2:A" & filx).Copy Destination:=Sheets("Hoja2").Range("A2")
Range(Cells(2, x), Cells(filx, x)).Copy Destination:=Sheets("Hoja2").Range("B2")
'quita filtros
Cells(1, x).AutoFilter
End Sub
Solo ajusta el nombre de tus hojas y el rango de col en la instrucción del Autofilter, en mi ejemplo va de A:D
Si el tema resuelve tu consulta no olvides valorarla. Sino solicita aclaraciones.