Crear Informe en excel mediante macro

Necesito crear una macro en vba para que me localice los valores duplicados y a estos les agregue formato de celda en

Toda la fila, les envío imagen de lo que necesito.

1 respuesta

Respuesta
2

Te anexo la macro

Sub Macro2()
' Por Dante Amor
'
' Poner formato a celdas con Id duplicado
'
    u = Range("A" & Rows.Count).End(xlUp).Row
    Range("A3:H" & u).Borders.LineStyle = xlNone
    ini = 3
    ant = Cells(ini, "A").Value
    For i = ini To u + 1
        If Cells(i, "A").Value <> ant Then
            With Range("A" & ini & ":H" & i - 1)
                .Borders.LineStyle = xlContinuous
                .Borders(xlInsideVertical).LineStyle = xlNone
                .Borders(xlInsideHorizontal).LineStyle = xlNone
            End With
            ini = i
        End If
        ant = Cells(i, "A").Value
    Next
End Sub

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

¡Gracias! Es precisa y exactamente lo que buscaba. Muy amable de tu parte el responder con tanta celeridad. Nuevamente Muchas Gracias.

Pd: si pudieras enviarme la explicación de como funciona, para terminar de entender el proceso.

Abrazos. Ariel

Pongo comentarios en cada línea de la macro:

Sub Macro2()
' Por Dante Amor
'
' Poner formato a celdas con Id duplicado
'
'obtiene la última fila con datos de la columna A
    u = Range("A" & Rows.Count).End(xlUp).Row
'limpia los bordes del rango B3 y hasta H y última fila
    Range("A3:H" & u).Borders.LineStyle = xlNone
'para iniciar en la fila 3
    ini = 3
'pone en la variable ant el primer valor de la columna
    ant = Cells(ini, "A").Value
'inicia un ciclo desde la fila 3 hasta la última fila + 1
    For i = ini To u + 1
'cuando el valor siguiente de la fila es diferente al valor anterior
'entonces pone el formato en el bloque de celdas
        If Cells(i, "A").Value <> ant Then
            With Range("A" & ini & ":H" & i - 1)
                .Borders.LineStyle = xlContinuous
                .Borders(xlInsideVertical).LineStyle = xlNone
                .Borders(xlInsideHorizontal).LineStyle = xlNone
            End With
'pone el inicio del siguiente bloque
            ini = i
        End If
'pone cual es el valor anterior
        ant = Cells(i, "A").Value
    Next
'fin
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas