Io sfrutto il metodo elimina duplicati dell'oggetto range. Creo una colonna calcolata (ultima colonna a sinistra del range di dati) ch etesta se le condizioni di eliminazione sono soddisfatte; in tal caso la formula restituisce zero altrimenti restituisce il riferimento di riga.
Nel caso di esempio di Ale la formula può essere:
=SE(E(Foglio1!$Y2="X";Foglio1!$AX2="X");0;RIF.RIGA(Foglio1!$A2))
La macro che segue elimina i duplicati sulla colonna calcolata che non possono avere che valore zero. L'unico che resta viene individuato ( per es co metodo find e poi eliminato.
Nalla macro il range di dati è denominato 'Dati'
Option Explicit
Sub EliminaRigheMarcateRange()
Dim rngDati As Range
Dim rngSearch0 As Range
Dim rngCalcColumn As Range
Dim lngCols As Long
On Error GoTo ErrHandler
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Set rngDati = Range("Dati")
lngCols = rngDati.Columns.Count
rngDati.RemoveDuplicates Columns:=lngCols, Header:= _
xlYes
Set rngCalcColumn = rngDati.Columns(lngCols)
Set rngSearch0 = rngCalcColumn.Find(0, rngCalcColumn.Cells(1, 1), xlValues, xlWhole, xlByRows, xlNext)
If Not rngSearch0 Is Nothing Then
rngSearch0.EntireRow.Delete
End If
ExitProc:
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
ErrHandler:
MsgBox Err.Description
Resume ExitProc
End Sub