Comparar dos columnas con nombres similares en Excel

Comparar dos columnas en Excel la G con la D, la columna G tiene reducidos los nombres que son los mismos de la columna D. Ejemplo AT&T de la columna G es el mismo que AT&T de la columna D, solo que esta reducido.

Me pueden ayudar con una macro que al comparar ambas columnas me parezcan en color los nombres que ya están en la columna D y los que no están me los marque de otro color.

Y que se actualice si yo agrego otro nombre en la columna G.

Mando el link

https://github.com/jonathan-19/Excell 

1 Respuesta

Respuesta
2

¿Algo así?

y aqui esta la macro

Sub comparar_columnas()
Set columna1 = Range("d6").CurrentRegion
Set columna2 = Range("g6").CurrentRegion
With columna1
    .Sort key1:=Range(.Address), order1:=xlAscending
End With
With columna2
    filas = .Rows.Count
    filas2 = columna1.Rows.Count
    For i = 1 To filas
        texto = .Cells(i)
        For j = 1 To filas2
        On Error Resume Next
        hallar = WorksheetFunction.Search(texto, columna1.Cells(j), 1)
        xColor = columna1.Cells(j).Interior.ColorIndex
        If Err.Number > 0 And xColor <> 6 Then
            columna1.Cells(j).Interior.ColorIndex = 4
        Else
            columna1.Cells(j).Interior.ColorIndex = 6
        End If
        On Error GoTo 0
        Next j
    Next i
End With
Set columna1 = Nothing: Set columna2 = Nothing
End Sub

Y si la lista de la columna G la tuviera en la columna L, ¿qué parte de la macro le tendría que hacer esa modificación?

Cambia esta línea

Set columna2 = Range("g6").CurrentRegion

por esta 

Set columna2 = Range("l6").CurrentRegion

Buenas tardes, aquí esta el archivo como en el que estoy trabajando

https://github.com/jonathan-19/Excel 

Con una Macro Quiero comparar la Columna DE con la Columna L he igual forma como lo mencione arriba la columna L esta simplificado el nombre que pertenece de la columna DE y si en ves de ponerlo en color que aparezca en la Columna I "existente" los que ya están en la columna DE y los que no están que me ponga "no existente". Si no es mucho pedir

El problema fue como ´presentaste los datos inicialmente entendí que solo tenias dos columnas a comparar y sobre esas dos hice la macro, viendo tu archivo me doy cuenta que la macro tiene que ignorar todas las columnas menos la 4 para que quede como en la imagen

entonces ya con tu archivo modifique la macro de esta manera

Sub comparar_columnas()
Set COLUMNA1 = Range("A10").CurrentRegion.Columns(4)
Set columna2 = Range("l2").CurrentRegion
With COLUMNA1
    filas2 = .Rows.Count - 1
    columnas = .CurrentRegion.Columns.Count
    Set COLUMNA1 = .Rows(2).Resize(filas2)
    COLUMNA1.Select
End With
With columna2
    filas = .Rows.Count
    For i = 1 To filas
        texto = .Cells(i)
        For j = 1 To filas2
        On Error Resume Next
        hallar = WorksheetFunction.Search(texto, COLUMNA1.Cells(j), 1)
        xColor = COLUMNA1.Cells(j).Interior.ColorIndex
        If Err.Number > 0 And xColor <> 6 Then
            COLUMNA1.Cells(j).Interior.ColorIndex = 4
            COLUMNA1.Cells(j, 6) = "INEXISTENTE"
        Else
            COLUMNA1.Cells(j).Interior.ColorIndex = 6
            COLUMNA1.Cells(j, 6) = "EXISTENTE"
        End If
        On Error GoTo 0
        Next j
    Next i
End With
Set COLUMNA1 = Nothing: Set columna2 = Nothing
End Sub

Otra ves sigo

=REEMPLAZAR(INDICAR.LIBRO(1),1,ENCONTRAR("]",INDICAR.LIBRO(1),1),"")&T(AHORA())

=SI.ERROR(INDICE(ListarHojas,FILA()),"")

Use estas fórmulas para obtener el nombre de las hojas que tengo comparar que son las que están de la columna L al momento de ejecutar la macro no me da los resultados deseados

Creo que eso también debería de haberte dicho una disculpa a qui esta el ejemplo

https://github.com/jonathan-19/Excel2 

Y cuando agrego una nueva hoja se me actualiza la lista de la columna L

Si me puede ayudar con eso por favor

y al momento de actualizar la macro me da errores :( 

Este es el resultado final de la macro

y esta es la macro

Sub comparar_columnas()
Set LISTA = Range("L1").CurrentRegion
CUENTA = WorksheetFunction.CountA(Range("D:d")) - 1
Set LISTA2 = Range("D11").Resize(CUENTA, 1)
MATRIZ = LISTA
With LISTA
    FILAS = .Rows.Count
    For i = 1 To FILAS
        NLISTA = Trim(MATRIZ(i, 1))
        If NLISTA = "" Then End
        For J = 1 To CUENTA
            NLISTA2 = Trim(LISTA2.Cells(J, 1))
            On Error Resume Next
            INDICE = WorksheetFunction.Search(NLISTA, NLISTA2, 1)
            XCOLOR = LISTA2.Cells(J, 1).Interior.ColorIndex
            If Err.Number > 0 And XCOLOR <> 6 Then
                With LISTA2
                    .Cells(J, 1).Interior.ColorIndex = 4
                    .Cells(J, 6) = "INEXISTENTE"
                End With
            Else
                    With LISTA2
                    .Cells(J, 1).Interior.ColorIndex = 6
                    .Cells(J, 6) = "EXISTENTE"
                End With
            End If
SIG:
            On Error GoTo 0
        Next J
    Next i
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas