Autofiltering and deleting rows two times too slow
The code as is suffers from a few problems, the most obvious at first glance ones being:

Lack of Vertical Spacing

All the code is compressed into very little vertical space. It's not easy to mentally follow along with an infodump. Instead a maintainer would have it easier if they could see logical units in the code.

This can be as easy as adding a single empty line before each section starting with `nFilasActual´.

Lack of Abstraction

This code is indented four levels deep. After the second level of indentation, you should consider extracting the code into a method, just to maintain a cohesive level off semantic abstraction.

Intermingling "high-level" method calls and "low-level" iterations is very much less than ideal. Instead you want code that's in the same procedure to have a roughly equal level of abstraction. This reduces the strain on the reader, because reading requires less context-switching.



Here are a few simplifications I'd make:

Extract Simple Helper Procedures

Since you repeat the following code twice, it's a good candidate for a separate procedure:

Sub SilentDeleteVisibleRows(filteredRange As Range)
    Application.DisplayAlerts = False
    filteredRange.Offset(1, 0).Resize(filteredRange.Rows.Count - 1) _
      .SpecialCells(xlCellTypeVisible).Rows.Delete
    ' This assumes DisplayAlerts was True before calling this method.
    ' Alternatively the state could be stored into a variable.
    Application.DisplayAlerts = True
End Sub


Searching the number of lines is also something you do thrice:

Function NumberOfLines(sheet As Worksheet) As Long
    NumberOfLines = sheet.Cells(Rows.Count, 4).End(xlUp).Row
End Function


You might also want to extract the whole With block into some procedure with a good name to help the readability of the code overall (and reduce the level of indentation, freeing horizontal space).