Macro que copie datos que cumplan una condición y revise si se han copiado anteriormente

Soy nueva y quisiera saber como hacer una macro q me copie los datos de la columna "nombre" que cumplan la condición "si" (significa que están al dia) q los copie en otra hoja, pero antes de copiar revise si están o no en la lista donde se copiaran.

Respuesta
4

Podrías decirme lo siguiente:

1. En cuáles celdas están los datos.

2. En cuál celda está la condición "si"

3. Cómo se llama la hoja donde están los nombres

4. Cómo se llama la hoja a donde se van a copiar

5. Qué datos se van a copiar

6. En qué columna se va a revisar si existen

7. En qué celdas se van a copiar

Espero tus comentarios en el mismo orden de las preguntas.

Saludos. Dam

Gracias por responder, los datos que me consultas son los siguientes:

una aclaración, los datos que deseo que copie son los rut, no los nombres.

1.- las celdas donde están los datos son desde la B2 hasta B366 ( aquí se encuentran solamente los datos -RUT-, la base de datos completa corresponde a desde la columna B2 hasta la E366.

2.- no existe condición si (como función) , solamente un dato a discriminar ( texto si y no), esta ubicada en la celda desde E2 a E366.

3.- la hoja se llama: E.P

4.-la hoja donde se copiara se llama: planilla ob. médicas

5.- los datos a copiar: son los Rut ubicados en la columna B2 a B366

6.- se revisa si existen en la columna: A2 a A366

7.- se copiaran en la celda: A2 a A366.

Si no entiendes, creo que seria mejor si te enviara un ejemplo de las planillas y tratar de explicar mejor lo que deseo que haga la macros, desde ya muchas gracias.

Está bastante claro, sólo el punto 7 no me quedó claro, por ejemplo, si encuentro que el RUT de la B5, tiene el texto "si" en la E5, lo quieres que lo copie en la hoja "planilla ob. médicas", la duda es: ¿Lo pongo en la celda A5 o lo pongo en la última fila que esté disponible en la columna A?

Si es la primera opción esta sería la macro

Instrucciones para ejecutar macro
1. Abre tu hoja de excel
2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
3. En el menú elige Insertar / Módulo
4. En el panel del lado derecho copia la macro
5. Para ejecutarla presiona F5

Sub copiarut()
'copia rut
'Por.Dam
Set ori = Sheets("E.P")
Set des = Sheets("planilla ob. médicas")
ori.Select
For i = 2 To ori.Range("B" & Rows.Count).End(xlUp).Row
    If ori.Cells(i, "E") = "si" Then
        ori.Cells(i, "B").Copy Destination:=des.Cells(i, "A")
    End If
Next
End Sub

Si es la opción2

Sub copiarut2()
'copia rut
'Por.Dam
Set ori = Sheets("E.P")
Set des = Sheets("planilla ob. médicas")
ori.Select
For i = 2 To ori.Range("B" & Rows.Count).End(xlUp).Row
    encontrado = "no"
    If ori.Cells(i, "E") = "si" Then
        For j = 2 To des.Range("A" & Rows.Count).End(xlUp).Row
            If des.Cells(j, "A") = ori.Cells(i, "B") Then
                encontrado = "si"
            End If
        Next
        If encontrado = "no" Then
            ori.Cells(i, "B").Copy Destination:=des.Range("A" & des.Range("A" & Rows.Count).End(xlUp).Row + 1)
        End If
    End If
Next
End Sub

gracias por tu respuesta, la macro que deseo es la opción 2.

pero tengo una duda al momento de abrir el vba y ejecutar la macro se tendría que visualizar los cambios (es decir el llenado de datos en la hoja planilla ob. médicas verdad, porque la ejecuto y no rellena ningún dato.

Así es, se tendrían que ir a la hoja planilla todas las filas que tienen "si"

Puedes enviarme tu archivo para revisarlo

hola, ya envíe la planilla , pero sin ninguno de los códigos que me enviaste, solo con los datos brutos que yo he ingresado. Agradezco desde ya tu ayuda y espero tu respuesta.

Ya te regresé el archivo con la macro corregida.

Por favor, podrías finalizar la pregunta. Gracias

Deberás crear una pregunta nueva por cada evento.
Saludos. Dam

Una solución optima al problema planteado, sin duda un experto muy preocupado de que todo saliera correcto. Muchas gracias por tu ayuda, cualquier otra consulta espero contar con tu apoyo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas