Extraer varias lineas de una planilla, un criterio

Necesito extraer de una planilla excel varios datos por linea y colocarlos en una planilla nueva. El criterio de búsqueda es por la identificación de una persona, ahora el problema para mì que dentro de la planilla ésta identificación se repite. Si uso la función BUSCARV, sólo me arroja el primer registro encontrado. ¿Cómo podría hacer para rescatar el resto?.
Por favor si puedes responder te lo agradecrería, pué me urge.
1

1 Respuesta

7.000 pts.
Es muy complicado lo que pides.
Crea esta macro en la hoja en donde se te repiten los valores...
Trata de entender el funcionamiento de esta.
Sub Libro_Maquina()
Dim Valor As String... SERA EL VALOR QUE BUSCARAS QUE PUEDE VENIR DE OTRA HOJA O INGRESARLO TU CON EL COMANDO INPUTBOX
Dim I As Integer, J As
... i contara registros de la hoja en donde buscas y j contara registris de la hoja en donde pegas
Integer
Dim Titulo As Boolean INDICARA SE TE HAS ENCONTRADO CON OTRO NOMBRE PARA PODER SEPARAR LOS REGISTROS
Titulo = True
Sheets ES LA HojA ACTIVA DE EXcEL
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom ESTO ORDENA POR LA COLUMA D EN LA HOJA EN DONDE BUSCARAS
I = 1 PARTIMOS DEL REGISTRO UNO EN LA HOJA EN DONDE SE REPITEN LOS USUARIOS
While Range("D" & I) <> "" SI ES VACIO QUIERE DECIR QUE ESTAMOS EN EL PRIMER REGISTRO EN BLANO DE LA HOJA Y YA NO DEBERA SEGUIR BUSCANDO PUES ESTA ORDENADO POR LA COLUMAN D RECUERDAS?
Range("D" & I).Select SELECCIONA EL REGISTRO CON EL CUAL ESTAMOS BUSCANDO
Selection.Font.ColorIndex = 3 LE DA UN COLOR PARA PODER VER EN DONDE VAMOS
If Valor <> Range("d" & I) And I > 1 Then SI VALOR ES DISTINTO DEL QUE VIENE Y ADEMAS NO ES EL REGISTRO UNO DE LA HOJA EN DONDE BUSCAMODS QUIERE DECIR QUE HEMOS ENCONTRADO UN NUEVO USUARIOS
J = 1
Valor = Range("d" & I) POR LO QUE VALOR DEBE TOMAR EL NOMBRE DEL NUEVO USUARIO
Sheets.Add.Name = Valor CREAMOS UNA HOJA CON EL NOMBRE DE NUESTROS NUEVO USUARIOS
Sheets("Base_Datos"). Select REGRESAMOS A LA HOJA EN DONDE ESTAMOS BUSCANDO
rows("1:1"). Selectseleccionamos el registro de nuestro nuevo usuarios
Selection. Copy LO COPIAMOS
Sheets(Valor). Select NOS CAMBIAMOS A LA HOJA DE NUESTRO NUEVO USUARIOS
ActiveSheet. Paste y pegamos el valor en el primer registro por eso es que j tomo el valor de 1
Titulo = false y decimos que debería venir un registro igual el del nuevo usuario
End If
If I > 1 Then SI ESTAMOS EN EL MAYOR DEL PRIMER REGISTROS DE LA HOJA EN DONDE ESTAMOS BUSCANDO
J = J + 1 INCREMENTAMOS EL REGISTRO DE LA HOJA EN DONDE PEGAREMOS LOS VALORES IGUALES EL NOMBRE DEL USUARIOS ENCONTRADO ANTERIORMENTE
Sheets("Base_Datos"). Select REGRESAMOS A LA HOJA EN DONDE BUSCAMOS
rows(i & ":" & i).select seleccionamso el registro i(recuerda que i esta dentro de un ciclo while) hasta i ose solo seleccionas de un registro i:i
Selection. Copy COPIAMOS
Sheets(Valor).Select NOS CAMBIAMOS A LA HOJA EN DONDE ESTAMOS PEGANDO
rows(j & ":" & j). Activate activamos el registro de la hoja en donde estamos pegando que lo lleva contado la letra j
ActiveSheet. Paste Y PEGAMOS
End If
Sheets("Base_Datos").Select NOS CAMBIAMOS DE HOJA A LA QUE ESTAMNOS BUSCANDO
I = I + 1 BAJO EN EL REGISTRO DE LA HOJA QUE ESTOY BUSCANDO
Wend Y REGRESO ARRIBA PARA SEGUIR LA BUSQUEDA
End Sub
Es complicado verdad, esto si logras entenderlo te serviría para hacer lo que necesitas.
A estudier entonces
Bye
Si te sirve agradece aumentando mi puntuación, pero si no te sirve es por que no has logrado entenderlo.
Te aseguro te servirá.
Un amigo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas