Visual Basic - Pasar de una lista a otra sólo los no repetidos

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 13 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pasar de una lista a otra sólo los no repetidos

Publicado por J (1 intervención) el 01/05/2019 10:42:10
Buenos días,

Necesito hacer una macro para agregar a una base de datos los registros no existentes, por ejemplo tengo dos columnas A (registros del día) y B (base de datos global) y necesito que me pase los datos de la columna A que no estén en la columna B, digamos los nuevos registros, sé que puedo pasar todos y luego eliminar los duplicados, pero me gustaría aprender a hacerlo y que me pase sólo los datos de la columna A si no existen en la columna B. ¿Me podéis ayudar por favor?

Gracias y un saludo,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.259
Plata
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Pasar de una lista a otra sólo los no repetidos

Publicado por Antoni Masana (558 intervenciones) el 02/05/2019 13:41:06
Hay otras formas de hacerlo pero esta es una de ellas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Copia_A_to_B()
    Dim Fila_A As Long, Fila_B as Long, Fila As Long, Existe as Boolean
    ' ---&--- Busco la primera celda vacia de la columna B
    Fila_B = 1
    While Cells(Fila_B, "B") <> ""
       Fila_B = Fila_B + 1
    Wend
    ' ---&--- Recorro la columna A hasta la primera celda vacia
    Fila_A = 1
    While Cells(Fila_A, "A") <> ""
        ' --- Compruebo si existe
        Existe = False
        For Fila = 1 To Fila_B - 1
            If Cells(Fila_A, "A") = Cells(Fila, "B") Then Existe = True: Exit For
        Next
        ' --- Si no existe la añade
        If Not Existe Then
            Cells(Fila_B, "B") = Cells(Fila_A, "A")
            Fila_B = Fila_B + 1
        End If
        Fila_A = Fila_A + 1
    Wend
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar