El problema es porque no estás poniendo una categoría que exista. Tal vez estás poniendo un espacio o una letra demás.
Utiliza la siguiente macro, verifica si existe el cliente y la categoría, si no existen te envía un mensaje, si existe realiza el filtro. Si no hay información, la hoja estará vacía.
Sub Consolidar()
'Por.Dante Amor
'
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set h1 = Sheets("Ruteo")
Set h2 = Sheets("Consolidado")
Set h3 = Sheets("Hoja1")
h3.Cells.Clear
u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
If u2 < 5 Then u2 = 5
h2.Range("A5:C" & u2).ClearContents
If h1.AutoFilterMode Then h1.AutoFilterMode = False
cliente = h2.[B1]
catego = h2.[B2]
Set b = h1.Columns("H").Find(cliente, lookat:=xlWhole)
If b Is Nothing Then
MsgBox "El cliente no existe"
Exit Sub
End If
Set b = h1.Columns("G").Find(catego, lookat:=xlWhole)
If b Is Nothing Then
MsgBox "La categoría no existe"
Exit Sub
End If
'
u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
h1.Name & "!R1C1:R" & u1 & "C18", Version:=xlPivotTableVersion12).CreatePivotTable _
TableDestination:="Hoja1!R1C1", TableName:="Tabla dinámica4", _
DefaultVersion:=xlPivotTableVersion12
With h3.PivotTables("Tabla dinámica4").PivotFields("Cliente")
.Orientation = xlPageField
.Position = 1
End With
With h3.PivotTables("Tabla dinámica4").PivotFields("Categoria")
.Orientation = xlPageField
.Position = 1
End With
With h3.PivotTables("Tabla dinámica4").PivotFields("Codigo")
.Orientation = xlRowField
.Position = 1
End With
With h3.PivotTables("Tabla dinámica4").PivotFields("Descripcion")
.Orientation = xlRowField
.Position = 2
End With
h3.PivotTables("Tabla dinámica4").AddDataField h3.PivotTables _
("Tabla dinámica4").PivotFields("Cant"), "Suma de Cant", xlSum
With h3.PivotTables("Tabla dinámica4")
.InGridDropZones = True
.RowAxisLayout xlTabularRow
End With
h3.PivotTables("Tabla dinámica4").PivotFields("Codigo").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
H3. PivotTables("Tabla dinámica4"). PivotFields("Cliente"). _
ClearAllFilters
H3. PivotTables("Tabla dinámica4"). PivotFields("Cliente").CurrentPage _
= cliente
H3. PivotTables("Tabla dinámica4"). PivotFields("Categoria"). _
ClearAllFilters
H3. PivotTables("Tabla dinámica4"). PivotFields("Categoria"). _
CurrentPage = catego
u3 = h3.Range("A" & Rows.Count).End(xlUp).Row
H3.Range("A6:C" & u3). Copy
H2. Range("A5"). PasteSpecial xlValue
Application.ScreenUpdating = True
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias