Extraer datos que no se repitan y poner en otra hoja

26/03/2010 - 05:51 por Jorge Vega | Informe spam
Saludos a todos, quiero ver si me pueden ayudar un poco.

Tengo un xlsx con 3 hojas, la hoja1 tengo una lista de datos: Id / Nombre
/ Depto / correo

En la hoja 2 tengo los mismos campos pero con ciertos datos, hay datos
similares a la hoja 1 que viene siendo una especie de BD.

Deseo en la Hoja3 pasar todos aquellos datos que al pasar por la Hoja1 no
esten en la hoja2.

La idea es hacer una macro para hacerlo en varias oportunidades.

Muchas gracias por la ayuda que me puedan brindar.

Horhe

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
26/03/2010 - 08:29 | Informe spam
hola, Jorge !

necesitas complementar la informacion con algunos detalles (p.e.)

- existen registros duplicados (en cualquier forma) en ambos listados ?
- se puede basar la busqueda en solo uno de los campos ? (cual ?) o deben ser varios (cuales ?)
- los rangos de datos son... (cuales ? y...) siempre fijos ? (o son de/crecientes ?)

completa con los detalles que permitan (RE)construir un modelo de trabajo "igual al tuyo"

saludos,
hector.

__ OP __
Tengo un xlsx con 3 hojas, la hoja1 tengo una lista de datos: Id / Nombre / Depto / correo
En la hoja 2 tengo los mismos campos pero con ciertos datos, hay datos similares a la hoja 1 que viene siendo una especie de BD.
Deseo en la Hoja3 pasar todos aquellos datos que al pasar por la Hoja1 no esten en la hoja2.
La idea es hacer una macro para hacerlo en varias oportunidades...
Respuesta Responder a este mensaje
#2 Jorge Vega
26/03/2010 - 15:48 | Informe spam
Primero que nada agradecerte tu respuesta.

La idea es la siguiente, en la hoja 1 iré agregando los datos de personas
que van respondiendo un cuestionario, debo recibir cerca de 3000 respuestas.

En la hoja 2 tendré la base de datos completa con todas las personas a las
que se le enviará dicha encuesta.

La idea es poder determinar que persona no ha enviado la respuesta en un
determinado instante, para ello lo quiero poner en la hoja 3, y de igual
forma poder obtener toda la linea que ya esta en la BD de la persona que no
ha enviado mensaje ID / Nombre / Depto / Correo

El mensaje que recibo viene con el ID, los demás datos no, esos los tengo en
la BD.

El rango inicia en la línea 2 de la columna 1 en ambas hojas, que es el
Documento de Identificación de la persona por lo que no existirá dato
duplicado en ninguno de las hojas 1-2.

El dato de comparación viene bajo el formato 909990999

Espero te quede clara la idea y nuevamente gracias por la ayuda.

Horhe




"Héctor Miguel" wrote:

hola, Jorge !

necesitas complementar la informacion con algunos detalles (p.e.)

- existen registros duplicados (en cualquier forma) en ambos listados ?
- se puede basar la busqueda en solo uno de los campos ? (cual ?) o deben ser varios (cuales ?)
- los rangos de datos son... (cuales ? y...) siempre fijos ? (o son de/crecientes ?)

completa con los detalles que permitan (RE)construir un modelo de trabajo "igual al tuyo"

saludos,
hector.

__ OP __
> Tengo un xlsx con 3 hojas, la hoja1 tengo una lista de datos: Id / Nombre / Depto / correo
> En la hoja 2 tengo los mismos campos pero con ciertos datos, hay datos similares a la hoja 1 que viene siendo una especie de BD.
> Deseo en la Hoja3 pasar todos aquellos datos que al pasar por la Hoja1 no esten en la hoja2.
> La idea es hacer una macro para hacerlo en varias oportunidades...


.

Respuesta Responder a este mensaje
#3 Héctor Miguel
26/03/2010 - 19:51 | Informe spam
hola, Jorge !

copia/pega (o escribe) la siguiente macro en un modulo de codigo estandar
comprueba/corrige primero si los nombres de las hojas no fueran los reales ?)
y toma en cuenta que la macro primero "limpia" (borra) las celdas de la hoja3

Sub Lista_Faltantes()
Application.ScreenUpdating = False
Worksheets("hoja3").Cells.Clear
With Worksheets("hoja1")
With .Range("a1").CurrentRegion
Worksheets("hoja3").Range(.Resize(1).Address) = .Resize(1).Value
.Offset(1, .Columns.Count + 1).Resize(1, 1).Formula = "=countif(hoja2!a:a,a2)=0"
.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=.Offset(, .Columns.Count + 1).Resize(2, 1), _
CopyToRange:=Worksheets("hoja3").Range("a1").CurrentRegion
.Offset(1, .Columns.Count + 1).Resize(1, 1).ClearContents
End With
Debug.Print .UsedRange.Address
End With
End Sub

saludos,
hector.

__ OP __
La idea es... en la hoja 1 ire agregando los datos de personas que van respondiendo un cuestionario... cerca de 3000 respuestas.
En la hoja 2 tendre la base de datos completa con todas las personas a las que se le enviara dicha encuesta.
... determinar que persona no ha enviado la respuesta en un determinado instante, para ello lo quiero poner en la hoja 3
y de igual forma poder obtener toda la linea que ya esta en la BD de la persona que no ha enviado mensaje ID / Nombre / Depto / Correo
El mensaje que recibo viene con el ID, los demas datos no, esos los tengo en la BD.
El rango inicia en la linea 2 de la columna 1 en ambas hojas
... es el Documento de Identificacion de la persona por lo que no existira dato duplicado en ninguno de las hojas 1-2.
El dato de comparacion viene bajo el formato 909990999
Respuesta Responder a este mensaje
#4 Juan Español
26/03/2010 - 20:23 | Informe spam
Hola Jorge:

Una solución si necesidad de tercera Hoja
- Supongamos que los Id de las personas están en la columna A de la hoja 2
- Supongamos que los Id de las personas que responden están en la columna A
de la hoja 1
* Creamos un nombre RRR se refiera a: =Hoja1!$A$2:$A$3001

Si en la Hoja2, donde está la BD, añades una columna llamada RESPUESTA por
ejemplo la W
y en W2 pones esta fórmula =BUSCAR(A2;RRR)¢

Tendrás una columna que te permitirá filtrar, quien sí ha respondido y quien
no, sin duplicidad de datos.

Saludos.-

"Jorge Vega" escribió en el mensaje de
noticias news:
Primero que nada agradecerte tu respuesta.

La idea es la siguiente, en la hoja 1 iré agregando los datos de personas
que van respondiendo un cuestionario, debo recibir cerca de 3000
respuestas.

En la hoja 2 tendré la base de datos completa con todas las personas a las
que se le enviará dicha encuesta.

La idea es poder determinar que persona no ha enviado la respuesta en un
determinado instante, para ello lo quiero poner en la hoja 3, y de igual
forma poder obtener toda la linea que ya esta en la BD de la persona que
no
ha enviado mensaje ID / Nombre / Depto / Correo

El mensaje que recibo viene con el ID, los demás datos no, esos los tengo
en
la BD.

El rango inicia en la línea 2 de la columna 1 en ambas hojas, que es el
Documento de Identificación de la persona por lo que no existirá dato
duplicado en ninguno de las hojas 1-2.

El dato de comparación viene bajo el formato 909990999

Espero te quede clara la idea y nuevamente gracias por la ayuda.

Horhe




"Héctor Miguel" wrote:

hola, Jorge !

necesitas complementar la informacion con algunos detalles (p.e.)

- existen registros duplicados (en cualquier forma) en ambos listados ?
- se puede basar la busqueda en solo uno de los campos ? (cual ?) o deben
ser varios (cuales ?)
- los rangos de datos son... (cuales ? y...) siempre fijos ? (o son
de/crecientes ?)

completa con los detalles que permitan (RE)construir un modelo de trabajo
"igual al tuyo"

saludos,
hector.

__ OP __
> Tengo un xlsx con 3 hojas, la hoja1 tengo una lista de datos: Id /
> Nombre / Depto / correo
> En la hoja 2 tengo los mismos campos pero con ciertos datos, hay datos
> similares a la hoja 1 que viene siendo una especie de BD.
> Deseo en la Hoja3 pasar todos aquellos datos que al pasar por la Hoja1
> no esten en la hoja2.
> La idea es hacer una macro para hacerlo en varias oportunidades...


.

Respuesta Responder a este mensaje
#5 Jorge Vega
26/03/2010 - 21:30 | Informe spam
Hector he realizado lo que me indicas, pero lo que pasan son unicamente los
encabezados.

La hoja limpia y pone los encabezados perfectamente pero después de allí no
hace mas nada. Será que estoy obviando modificar algo, la idea como te dije
es poder obtener en la Hoja3 las personas que no estan en la hoja1 segun la
hoja2.

Hoja1 Hoja2 Hoja3

101110111 101110111 303330333
202220222 202220222 404440444
303330333 505550555
404440444
505550555

Y nuevamente, muchas gracias por tu tiempo.

Horhe

"Héctor Miguel" wrote:

hola, Jorge !

copia/pega (o escribe) la siguiente macro en un modulo de codigo estandar
comprueba/corrige primero si los nombres de las hojas no fueran los reales ?)
y toma en cuenta que la macro primero "limpia" (borra) las celdas de la hoja3

Sub Lista_Faltantes()
Application.ScreenUpdating = False
Worksheets("hoja3").Cells.Clear
With Worksheets("hoja1")
With .Range("a1").CurrentRegion
Worksheets("hoja3").Range(.Resize(1).Address) = .Resize(1).Value
.Offset(1, .Columns.Count + 1).Resize(1, 1).Formula = "=countif(hoja2!a:a,a2)=0"
.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=.Offset(, .Columns.Count + 1).Resize(2, 1), _
CopyToRange:=Worksheets("hoja3").Range("a1").CurrentRegion
.Offset(1, .Columns.Count + 1).Resize(1, 1).ClearContents
End With
Debug.Print .UsedRange.Address
End With
End Sub

saludos,
hector.

__ OP __
> La idea es... en la hoja 1 ire agregando los datos de personas que van respondiendo un cuestionario... cerca de 3000 respuestas.
> En la hoja 2 tendre la base de datos completa con todas las personas a las que se le enviara dicha encuesta.
> ... determinar que persona no ha enviado la respuesta en un determinado instante, para ello lo quiero poner en la hoja 3
> y de igual forma poder obtener toda la linea que ya esta en la BD de la persona que no ha enviado mensaje ID / Nombre / Depto / Correo
> El mensaje que recibo viene con el ID, los demas datos no, esos los tengo en la BD.
> El rango inicia en la linea 2 de la columna 1 en ambas hojas
> ... es el Documento de Identificacion de la persona por lo que no existira dato duplicado en ninguno de las hojas 1-2.
> El dato de comparacion viene bajo el formato 909990999


.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida