Comparar 2 listas en excel y combinarlas en otra hoja

Tengo una hoja con 2 listas de 2 columnas cada una, quiero pasarlas a otra hoja pero comparándolas, por ejemplo hoja1, columnas A, B, C y D, los datos a comparar están en A y D son números pero hay números en A que no están en D entonces al pasar todos los datos a la otra hoja que me deje vacíos los números faltantes.

A   B   C   D

1   A   1   A

2   B   2   B

3   C   4   D

4   D   5   E

nueva hoja

A   B   C   D

1   A   1   A

2   B   2   B

3   C   0   0

4   D   4   D

0   0   5   E

1 Respuesta

Respuesta
1

H0la Héctor:

¿Es posible que subas una imagen?
Entiendo más o menos lo que quieres, pero tu ejemplo no concuerda bien con la descripción, ya que dices que A y D son números que se comparan, pero lo que veo es que en A hay números y en D hay letras. Además, pareces comparar A y B respecto a C y D, lo que me deja la duda sobre si las celdas están combinadas o no.

S@lu2

Gracias por responder, si, mi error jeje debería ser

A   B   C   D

1   A   A   1

2   B   B   2

3   C   D   4

4   D   E   5

nueva hoja

A   B   C   D

1   A   A   1

2   B   B   2

3   C   0   0

4   D   D   4

0   0   E   5

Te mando una imagen con parte de la lista a comparar y ordenar

Héctor:

Prueba esta macro.

Si son más de 10.000 filas, puede tardar un tiempo considerable, sobre los 60 segundos.

Sub subRellenar()
    Dim lngUltFila As Long, i As Long
    Application.ScreenUpdating = False
    lngUltFila = Range("A2").CurrentRegion.Rows.Count
    i = 2
    't = Timer()'
    Do Until (i > lngUltFila)
        If Cells(i, 1).Value > Cells(i, 4).Value Then
            If Cells(i, 4).Value <> "" And Cells(i, 4).Value <> 0 Then
                Range("A" & i & ":B" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                Range("A" & i & ":B" & i).Value = 0
                lngUltFila = lngUltFila + 1
            Else
                Range("C" & i & ":D" & i).Value = 0
            End If
        ElseIf Cells(i, 1).Value < Cells(i, 4).Value Then
            If Cells(i, 1).Value <> "" And Cells(i, 1).Value <> 0 Then
                Range("C" & i & ":D" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
                Range("C" & i & ":D" & i).Value = 0
                lngUltFila = lngUltFila + 1
            Else
                Range("A" & i & ":B" & i).Value = 0
            End If
        Else
            If Cells(i, 1).Value = "" Then Exit Do
        End If
        i = i + 1
    Loop
    Application.ScreenUpdating = True
    'MsgBox Timer() - t'
End Sub

Me comentas cómo te va y si te es útil.

S@lu2

¡Gracias!

El equipo en el que trabajo al parecer no soporta el uso de macros ya que me cierra el Excel cuando intento grabar o hacer alguna otra cosa como desarrollador, en cuanto pruebe en otro equipo te comento, pero encontré buscando en la red un complemento que hace precisamente eso, fuzzy lookup que ya saco del bache a mi jefe quien era el que estaba trabajando con las listas que mencione, pero muchas gracias por la pronta respuesta.

Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas