BUSCAR en dos páginas

10/03/2008 - 12:40 por José Rafael | Informe spam
Buenos días:
Tengo una lista de precios de casi 100.000 artículos.
Cuando el software de mi empresa me la actualiza en excel, me abre un libro
nuevo "Libro1" que como se abre por defecto con 3 pestañas, en la "hoja1" me
indica los datos de la petición que he hecho al "programa madre" de la
empresa, p.ej. "Tarifa de precios al 29-2-08, solicitada por E40 y fecha
4-3-08", las hojas 2 y 3 las deja en blanco y me abre la "hoja4" donde con
una primera fila de encabezados, llega hasta la fila 50.000 extrayendo los
articulos con sus caracteristicas por columna. (Columna A=Referencia;
Columna B=Nombre;Columna C=Empaque, etc, así hasta la columna M).
Como el listado va mas allá de los 65536 filas, nombra otra "hoja5" que con
el mismo encabezado en la primera fila continúa extrayendo artículos hasta
completar el listado que en este caso llega hasta la fila 48.085 de esta
"hoja5".
Con una plantilla propia y sobre todo con BuscarV, "coloco" los datos donde
los necesito pero no sé como sería la fórmula para que busque en la primera
"hoja4" y si encuentra la referencia extraiga datos y si nó la encuentra
pase a la segunda "hoja5" para seguir buscando.
Las referencias de artículos son únicas es decir irrepetibles.
Gracias por la ayuda.
Saludos
José Rafael

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
14/03/2008 - 18:33 | Informe spam
hola, José Rafael !

Punto 7
Son 31 posiciones de celdas donde poner las referencias (B29:B60) para rescatar en las columnas D,E,F,G
de la misma fila los datos correspopndientes.
(por cierto, a veces solo se utilizan una parte de la plantilla p.e. de B29 a B35, resto en blanco)
Si me pasas un codigo lo probare por si es mas rapido y mas practico, sino, utilizare la formula manual...



para proponer algun codigo, es necesario que comentes el "orden o (re)acomodo" de las columnas origen a destino (me explico):

a) en un mensaje previo comentabas los titulos de columnas en las hoja4 y hoja5...
Te expongo a continuacion las columnas con sus titulos.
1 Columna A Referencia
2 Columna B Codigo
3 Columna C Descripcion
4 Columna D Empaque
5 Columna E Grupo estadistico
6 Columna F Tipo
7 Columna G Precio tarifa
8 Columna H Neto venta
9 Columna I Coste
10 Columna J Beneficio
11 Columna K Margen sobre venta
12 Columna L Margen sobre coste
13 Colymna M Precio Lista x 100 u.





b) en las formulas (pensadas) que comentas (punto 4 del mensaje anterior) no es el mismo "orden"...
He pensado en una formula mas o menos asi:
en D29 si(BUSCARV(b29;basehoja4;4;falso)=0;BUSCARV(b29;basehoja5;4;falso) . o quizas con Y / O ...
en E29 si(BUSCARV(b29;basehoja4;3;falso)=0;BUSCARV(b29;basehoja5;3;falso) . o quizas con Y / O ...
en F29 si(BUSCARV(b29;basehoja4;7;falso)=0;BUSCARV(b29;basehoja5;7;falso) . o quizas con Y / O ...
y asi sucesivamente...



revisa esto:
- en la columna "D" (4), traes datos de la columna 4 (D)
- en la columna "E" (5), traes datos de la columna 3 (C)
- en la columna "F" (6), traes datos de la columna 7 (G)
- "y asi sucesivamente..." -???-

comentas (si hubiera) algun otro detalle "en el tintero" ?
saludos,
hector.
Respuesta Responder a este mensaje
#7 Jose
15/03/2008 - 09:34 | Informe spam
Hola Héctor:
En la plantilla las columnas son diferentes de la base de datos.
En una fila (desde la 29 hasta la 60), por ejemplo la fila 29, a saber:
Columna A = traduccion en pesetas de la columna H (neto en euros) que no
sale en la impresión de la plantilla.
Columna B = donde se escribe la referencia
Columna C = cantidad que se pone manualmente
Columna G = descuento que se trae con una fórmula de otra base de datos
Columna H = precio neto una vez hecho el descuento correspondiente
Columna I = multiplicación de la cantidad por el neto
Resto de columnas hacia la derecha "no salen" en la impresión y las utilizo
para diferentes cálculos y extracción de datos de otras bases de datos,
p.ej. páginas del catálogo

Lo que necesito es:
- en la columna "D" (4), traer datos de la columna 4 de la base de datos (D)
Empaque
- en la columna "E" (5), traer datos de la columna 3 de la base de datos (C)
Descripción artículo
- en la columna "F" (6), traer datos de la columna 7 de la base de datos (G)
Precio de tarifa
- en la columna "F" (6), traer datos de la columna 5 de la base de datos (E)
Grupo estadistico

Espero que ahora esté mejor definido todo.
Saludos y gracias
José Rafael




"Héctor Miguel" escribió en el mensaje
news:%
hola, José Rafael !

Punto 7
Son 31 posiciones de celdas donde poner las referencias (B29:B60) para
rescatar en las columnas D,E,F,G
de la misma fila los datos correspopndientes.
(por cierto, a veces solo se utilizan una parte de la plantilla p.e. de
B29 a B35, resto en blanco)
Si me pasas un codigo lo probare por si es mas rapido y mas practico,
sino, utilizare la formula manual...



para proponer algun codigo, es necesario que comentes el "orden o
(re)acomodo" de las columnas origen a destino (me explico):

a) en un mensaje previo comentabas los titulos de columnas en las hoja4 y
hoja5...
Te expongo a continuacion las columnas con sus titulos.
1 Columna A Referencia
2 Columna B Codigo
3 Columna C Descripcion
4 Columna D Empaque
5 Columna E Grupo estadistico
6 Columna F Tipo
7 Columna G Precio tarifa
8 Columna H Neto venta
9 Columna I Coste
10 Columna J Beneficio
11 Columna K Margen sobre venta
12 Columna L Margen sobre coste
13 Colymna M Precio Lista x 100 u.





b) en las formulas (pensadas) que comentas (punto 4 del mensaje anterior)
no es el mismo "orden"...
He pensado en una formula mas o menos asi:
en D29 si(BUSCARV(b29;basehoja4;4;falso)=0;BUSCARV(b29;basehoja5;4;falso)
. o quizas con Y / O ...
en E29 si(BUSCARV(b29;basehoja4;3;falso)=0;BUSCARV(b29;basehoja5;3;falso)
. o quizas con Y / O ...
en F29 si(BUSCARV(b29;basehoja4;7;falso)=0;BUSCARV(b29;basehoja5;7;falso)
. o quizas con Y / O ...
y asi sucesivamente...



revisa esto:
- en la columna "D" (4), traes datos de la columna 4 (D)
- en la columna "E" (5), traes datos de la columna 3 (C)
- en la columna "F" (6), traes datos de la columna 7 (G)
- "y asi sucesivamente..." -???-

comentas (si hubiera) algun otro detalle "en el tintero" ?
saludos,
hector.

Respuesta Responder a este mensaje
#8 Héctor Miguel
15/03/2008 - 21:32 | Informe spam
hola, Jose !

En la plantilla las columnas son diferentes de la base de datos.
En una fila (desde la 29 hasta la 60), por ejemplo la fila 29, a saber:
Columna A = traduccion en pesetas de la columna H (neto en euros) que no sale en la impresion de la plantilla.
Columna B = donde se escribe la referencia
Columna C = cantidad que se pone manualmente (...)

Lo que necesito es:
- en la columna "D" (4), traer datos de la columna 4 de la base de datos (D) Empaque
- en la columna "E" (5), traer datos de la columna 3 de la base de datos (C) Descripcion artículo
- en la columna "F" (6), traer datos de la columna 7 de la base de datos (G) Precio de tarifa
- en la columna "F" (6), traer datos de la columna 5 de la base de datos (E) Grupo estadistico (...)



la siguiente macro (como ejemplo) NO deposita formulas, solo los datos en caso de encontrar el dato buscado (columna B)
si no lo encuentra en la hoja4 (columna A), continua buscando en la hoja5 (columna A)
si no lo encuentra en ninguna de las hojas... BORRA el contenido de D:G de la "fila en turno" (por si las dudas) <= OJO

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

corre la macro desde la hoja donde tienes los datos a buscar...

Sub Registra_datos()
Dim Fila As Byte, Celda As Range
On Error Resume Next
For Fila = 29 To 60
Set Celda = Worksheets("hoja4").Range("a:a").Find( _
What:=Range("b" & Fila), LookIn:=xlValues, LookAt:=xlWhole)
If Not Celda Is Nothing Then Goto Registra
Set Celda = Worksheets("hoja5").Range("a:a").Find( _
What:=Range("b" & Fila), LookIn:=xlValues, LookAt:=xlWhole)
If Celda Is Nothing Then Range("d" & Fila).Resize(, 4).ClearContents: Goto Done
Registra:
With Celda
Range("d" & Fila).Resize(, 4).Value = Array( _
.Offset(, 3).Value, .Offset(, 2).Value, .Offset(, 6).Value, .Offset(, 4).Value)
End With
Done:
Set Celda = Nothing
Next
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida