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.
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.
Respuesta de calvuch
1
1
calvuch, las fallas constantes de esta web me cansaron!! me voy a...
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
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.
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
¿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.
( 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
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
¿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
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
- Compartir respuesta
- Anónimo
ahora mismo