(VBA) células duplicados eliminar en una misma región

Nytro:

Tengo un problema que no puedo llegar a eliminar los duplicados dentro de la misma sección (el mismo nombre en la columna B). Se debe analizar cada sección y mantener sólo el primero valor único de cada sección.

El problema es que analiza si 2 filas consecutivas tienen el mismo nombre (que indica la sección), y en base a que elimina los duplicados. No analizar cada sección de comparación, por ejemplo, primera fila con la última fila, pero 1 por 1, lo cual es incorrecto, porque la penúltima o la última fila de cada sección pueden tener un duplicado sobre la base de la primera fila.

Vicente:

Estoy seguro de que se puede encontrar mejor y el código aquí más optimizado, éste hace el trabajo:

Sub DeleteDuplicates
    Dim ColBrand As Integer, ColMil As Integer, ColColor as Integer
    Dim RowSectionStart as Integer, RowCurrent as Integer
    Dim ws As Worksheet

    Set ws = Workbooks("Classeur1").Sheets("Feuil1")

    ColBrand = 2
    ColMil = 3
    ColColor = 4
    RowCurrent = 2

    Do While ws.Cells(RowCurrent, ColBrand).Value <> ""
        ' Section change if needed
        If RowCurrent = 1 Then
            RowSectionStart = RowCurrent
        ElseIf ws.Cells(RowCurrent, ColBrand) <> ws.Cells(RowCurrent - 1, ColBrand) Then
            RowSectionStart = RowCurrent
        End If

        If RowSectionStart <> RowCurrent Then
            ' Delete duplicate in Mil column
            If Not Range(ws.Cells(RowSectionStart, ColMil), ws.Cells(RowCurrent - 1, ColMil)).Find(ws.Cells(RowCurrent, ColMil).Value) Is Nothing Then
                ws.Cells(RowCurrent, ColMil).ClearContents
            End If

            ' Delete duplicate in Color column
            If Not Range(ws.Cells(RowSectionStart, ColColor), ws.Cells(RowCurrent - 1, ColColor)).Find(ws.Cells(RowCurrent, ColColor).Value) Is Nothing Then
                ws.Cells(RowCurrent, ColColor).ClearContents
            End If
        End If
        RowCurrent = RowCurrent + 1
    Loop

    Set ws = Nothing

End Sub

Esta imagen muestra el efecto del código. El contenido en las células de color amarillo se eliminan, puesto que ya están lo mencionan superior en el mismo 'sección'.

introducir descripción de la imagen aquí

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=383185&siteId=1
Recomendado
Clasificación