Excel buscar coincidencias

Ojala me puedas ayudar fíjate que tengo en una hoja por ejemplo en
A1 Luis y B1 María,
A2 Marcos y B2 Susana,
A3 Jorge y B3 María,
Lo que necesito, ya sea una fórmula o macro para que todos los datos que me coincidan en la columna B me los mande a otra hoja o archivo, es decir en este ejemplo que me copie en la otra hoja
A1 Luis y B1 María,
A2 Jorge y B2 María.

1 Respuesta

Respuesta
1
Pero para eso no es necesario programar anda, vale la pena realizar dos cosas nada más
1. Selecciones el rango completo A:B
2. Utilice la herramienta ordenar A-Z (ordenando por la columna B ), al ordenar todos los coincidentes te quedaran arriba y los no coincidentes abajo
3. Copie los datos coincidentes en donde usted desee
Fácil, rapido y bonito
Hola, tal vez no me explique, tengo una página web que en la cual cuando les mando un mensaje a los padres de familia les doy la opción de confirmar, y me llega su confirmación, con esto se que el papá ya le dio lectura al mensaje. Ahora digamos que ese papá tiene 3 hijos en la escuela y habrá otros que tengan 2 y 1 hijo.
Para esto tengo una base de datos en Excel que son como 900 registros de la siguiente forma.
( Tabla 1 )
Clave Alumno Grado Tutor
123 Luis Guzmán 3 María Pérez
344 Mario Ortiz 2 Mónica Sánchez
567 Susi Guzmán 6 María Pérez
456         Edwin Sanchez 1             Teresa jolmas
654         Joel santos         4             Guadalupe García.
Etc..
Etc..
La tabla de los que solo ya confirmaron aparece solo el tutor que a veces son como 470 registros.
( Tabla 2 )
Tutor
María Pérez
Mónica Sánchez
Etc..
Etc..
Etc ..
Bueno que es lo que necesito:
Que de la (tabla 2) que son los papás que ya confirmaron cheque desde el primer registro cuantos registros de la (tabla 1) coinciden en el Tutor y que los resultados me lo arroje en otra hoja o en otro archivo y que mi (tabla 3) quede de la siguiente forma.
Tutor Clave Alumno Grado
María Pérez 123 Luis Guzmán 3
María Pérez 567 Susi Guzmán 6
Mónica Sánchez 344 Mario Ortiz 2
Etc.
Etc..
Saludos.
Dime en que celdas están estos rótulos
¿Clave Alumno Grado Tutor
los datos están todos en la misma hoja o en diferentes Hoja1 hoja2?, etc
Hola, gracias por tu pronta respuesta, te comento son 2 libros diferentes y el resultado que necesito puede ser que lo copie en una hoja del libro 2 o bien crear otro nuevo libro con los resultados.
( Libro 1 )
                  A B C D
1 Clave Alumno Grado Tutor
2 123 Luis Guzmán 3 María Pérez
3 344 Mario Ortiz 2 Mónica Sánchez
4 567 Susi Guzmán 6 María Pérez
5             456         Edwin Sanchez    1             Teresa jolmas
6             654         Joel santos          4             Guadalupe García.
7 Etc..
8 Etc..
La tabla de los que solo ya confirmaron aparece solo el tutor que a veces son como 470 registros.
( Libro 2 )
                   A
1 Tutor
2 María Pérez
3 Mónica Sánchez
4 Etc..
5 Etc..
6 Etc ..
Bueno que es lo que necesito:
Que del (Libro 2) que son los papás que ya confirmaron busque desde el primer registro cuantos registros del (Libro 1) cuales coinciden en el Tutor y que los resultados me lo arroje en otra hoja o en otro libro quede de la siguiente forma.
                 A B C D
1
Tutor Clave Alumno Grado
2 María Pérez 123 Luis Guzmán 3
3 María Pérez 567 Susi Guzmán 6
4 Mónica Sánchez 344 Mario Ortiz 2
5 Etc.
6 Etc..
Saludos.
Veamos, te escribí un macro pero para ejecutarlo debes antes que anda preparar los datos.
En un libro nuevo comn 3 hojas (hoja1, hoja2, Hoja3), debes disponer los datos de la siguiente manera
en Hoja1:
              A B C D
1 Clave Alumno Grado Tutor
En hoja2:
                  A
1 Tutor
En hoja3 solo los rótulos:
           A B C D
1 Tutor Clave Alumno Grado
Luego pones esta macro en un modulo del libro nuevo:
Sub b_lista()
Dim A As Integer
Dim B As Integer
Dim i As Long
Dim ii As Long
Hoja1.Range("D65536").Formula = "=COUNTA(R[-65534]C:R[-1]C)"
Hoja2.Range("A65536").Formula = "=COUNTA(R[-65534]C:R[-1]C)"
A = Hoja1.Range("D65536").Value
B = Hoja2.Range("A65536").Value
If A = 0 Then MsgBox "No hay datos en el rango de busqueda", vbCritical: Exit Sub
If B = 0 Then MsgBox "No hay datos que buscar", vbCritical: Exit Sub
For ii = 2 To (B + 1)
For i = 2 To (A + 1) ' recorre los registros de hoja1
    If Hoja2.Range("A" & ii).Value = Hoja1.Range("D" & i).Value Then
    Hoja3.Range("A" & i).Value = Hoja1.Range("D" & i).Value
    Hoja3.Range("B" & i).Value = Hoja1.Range("A" & i).Value
    Hoja3.Range("C" & i).Value = Hoja1.Range("B" & i).Value
    Hoja3.Range("D" & i).Value = Hoja1.Range("C" & i).Value
    End If
DoEvents
Next
DoEvents
Next
    Hoja3.Activate
    Hoja3.Range("A1:D65535").Select
    Hoja3.Range(Selection, Selection.End(xlDown)).Select
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 3
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 1
    ActiveSheet.Range("$A$1:$D$65535").RemoveDuplicates Columns:=2, Header:=xlYes
    Hoja3.Range("A2").Select
MsgBox "terminado"
End Sub
Esto ejecuta la acción que requieres, busca cada nombre de tutor de la hoja2 y lo parea con cada registro de la hoja1 y si lo encuentra devuelve los datos a la hoja3 en la forma en que tu dispusiste los rótulos.
Bye
Eres un mago en verdad esta excelente.
¿Solo cómo ultimo en la hoja 2 tengo otro rotulo que necesito que también se copie en la hoja 3. como quedaría la macro?. De antemano te agradezco.
En Hoja1:
              A B C D
1 Clave Alumno Grado Tutor
En hoja2:
                  A B
1 Tutor Fecha de confirmación
En hoja3 solo los rótulos:
            A B C D E
1 Tutor Fecha de confirmación Clave Alumno Grado
Ja... te faltaba un campo, SOLO UN DETALLITO! , ja,ja,ja.
Ok. He modificado el código, quedo así:
Sub b_lista()
Dim A As Integer
Dim B As Integer
Dim i As Long
Dim ii As Long
Hoja1.Range("D65536").Formula = "=COUNTA(R[-65534]C:R[-1]C)"
Hoja2.Range("A65536").Formula = "=COUNTA(R[-65534]C:R[-1]C)"
A = Hoja1.Range("D65536").Value
B = Hoja2.Range("A65536").Value
If A = 0 Then MsgBox "No hay datos en el rango de busqueda", vbCritical: Exit Sub
If B = 0 Then MsgBox "No hay datos que buscar", vbCritical: Exit Sub
For ii = 2 To (B + 1)
For i = 2 To (A + 1) ' recorre los registros de hoja1
    If Hoja2.Range("A" & ii).Value = Hoja1.Range("D" & i).Value Then
    Hoja3.Range("A" & i).Value = Hoja1.Range("D" & i).Value
        Hoja3.Range("B" & i).Value = Hoja2.Range("B" & ii).Value
    Hoja3.Range("C" & i).Value = Hoja1.Range("A" & i).Value
    Hoja3.Range("D" & i).Value = Hoja1.Range("B" & i).Value
    Hoja3.Range("E" & i).Value = Hoja1.Range("C" & i).Value
    End If
DoEvents
Next
DoEvents
Next
    Hoja3.Activate
    Hoja3.Range("A1:E65535").Select
    Hoja3.Range(Selection, Selection.End(xlDown)).Select
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 3
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 1
    ActiveSheet.Range("$A$1:$E$65535").RemoveDuplicates Columns:=3, Header:=xlYes
    Hoja3.Range("A2").Select
MsgBox "terminado"
End Sub
Bye

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas