Macro para eliminar duplicados si se cumple la condición

Me puedes ayudar con una macro por favor, no me queda es que tengo la siguiente tabla con los siguientes campos

Lo que se requiere es que elimine los duplicados como se muestra en la tabla que se ve en la clave pero con la condición de que debe dejar forzosamente el administrativo que es el de la tnomina y el de docente eliminarlo por ejemplo tienes el 24299 duplicado y en el campo tnomina uno esta con la letra a y el otro con la letra de, entonces debe dejar el de la letra a y el otro eliminarlo para que de esta manera se elimine y solo quede el de la letra a.

3 respuestas

Respuesta
1

[Hola 

te paso la macro

Sub eliminar()
'[Por Adriel Ortiz
Set h = Sheets("Hoja1")
'
u = h.Range("O" & Rows.Count).End(xlUp).Row
For i = u To 2 Step -1
    If Cells(i, "O") = "D" Then
        h.Rows(i).Delete xlShiftUp
    End If
Next i
MsgBox "Fin"
End Sub

Valora la respuesta para finalizar

Respuesta
1

Te anexo la macro

Sub Eliminar_Duplicado()
'Por.Dante Amor
    For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
        If WorksheetFunction.CountIf(Columns("A"), Cells(i, "A")) > 1 And Cells(i, "O") = "D" Then
            Rows(i).Delete
        End If
    Next
    MsgBox "Fin"
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Respuesta

Prueba este código a ver que tal te va:

Sub Macro3()
    ActiveWorkbook.Worksheets("Hoja1").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja1").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "A:A"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja1").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A2").Select
    Do
    If ActiveCell.Offset(1, 0).Value = ActiveCell.Value Then
    If ActiveCell.Offset(0, 14).Value = "A" Then
    ActiveCell.Offset(1, 0).EntireRow.Delete
    Else
    Selection.EntireRow.Delete
    End If
    End If
    ActiveCell.Offset(1, 0).Select
    Loop Until ActiveCell.Value = ""
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas