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.
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