Extaer datos para pegar en ficha de clientes

12/07/2009 - 11:45 por José Rafael | Informe spam
Buenos días:
Tengo muchas veces este problema:
En una base de datos en Excel (2003) sobre la facturación de mi empresa que
periódicamente cambia y actualizo, utlilizo BUSCARV para extraer diversos
datos basandome en la referencia de cliente.
Ocurre que si quiero saber todos los artículos (columna G - (nº 7)
"Articulo") que ha consumido un cliente, al poner la referencia en la
fórmula BUSCARV, por ejemplo:
BUSCARV(E3,basearticulojunio09;5 falso); "solo" me devuelve el articulo de
la celda G3 y sin embargo puede ocurrir que hayan mas articulos consumidos
en G4, G5, G6, etcc. (hasta un INDETERMINADO número de filas dependiente del
mes de facturación.)
Sé que existen las tablas dinámicas que yo no domino muy bien, pero en este
caso no me serviría porque se trata de "llevar" los datos a una plantilla de
análisis que tengo para conocer muchos datos respecto a un cliente (es una
ficha tamaño DIN A4 muy elaborada con infinidad de datos "extraídos" de
diversas bases de datos y en su reverso DINA4 a partir de la celda B18,
quiero poner los articulos consumidos en un determinado periodo).
He pensado en grabar una macro que haga un filtro en la columna E
("Cliente") del dato elegido de un cuadro de lista donde figuren dichas
referencias de clientes y así copiar las columnas con los datos que me
interesan (variables en la cantidad de filas y no sé como se hace) para
posteriormente pegarlas en el reverso de la ficha y darles esta formidable
información a los vendedores cada mes.

Necesitaría controlar, supongo que con variables definidas :
-Elegir la referencia del cliente (¿que tal lo del cuadro de lista?.. ¿es
mejor un MGBOX?)
-La matriz resultante con el número de filas (que es variable según el
cliente y el mes elegido) que resultan cuando hago el filtro .(ver ejemplo
mas abajo)
-Elegir el periodo de tiempo que deseo analizar.

Me podéis ayudar en "materializar" la idea con un código o si pensáis en
otra forma de conseguir lo que quiero... adelante! y gracias.


Parte resumida de la base de datos:

Col. Nº Col. Titulo columna (fila 2) Datos en fila 3 Datos en fila 4
Datos fila Comentario sobre el dato
A 1 No. Factura 7100032 7100032 No interesa
B 2 Fecha factura 03/01/2007 03/01/2007 No interesa
C 3 Número de pedido 78587 78587 No interesa
D 4 Fecha de Pedido 22/12/2006 22/12/2006 No interesa
E 5 Cliente 35212308 35212308 Es 1ª col. matriz
"basearticulojunio09"
F 6 Nombre Cliente EXPOMURCIA S.L. EXPOMURCIA S.L. No interesa
G 7 Ramo 2D 2D No interesa
H 8 Descrip.Ramo Carpinterías Carpinterías No interesa
I 9 Código Postal 30009 30009 No interesa
J 10 Com.Ext. E42 E42 No interesa
K 11 Artículo 210.11.001 210.11.058 va a columna C18 de la hoja
"Reverso"
L 12 Descripción de artículo Llave maestra MK1 Llave cilindrica va a
columna B18 de la hoja "Reverso"
M 13 Unidad de medida PCE PCE va a columna D18 de la hoja "Reverso"
N 14 Grupo de Género C001 C001 No interesa
O 15 Grupo de Género Symo - Cerraduras Symo - Cerraduras No interesa
P 16 Cantidad 30 560 va a columna E18 de la hoja "Reverso"
Q 17 Valor de Venta neto 8,8 162,51 va a columna F18 de la hoja
"Reverso"

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
13/07/2009 - 04:52 | Informe spam
hola, José Rafael !

usa los filtros avanzados por codigo para "refrescar" los datos que consultes en cada ocasion
(p.e.) suponiendo que:

-> en tu hoja1:
los titulos estan en la fila 1, por lo que tus registros inician en la fila 2

-> en la hoja2:
a) pon en A1 el mismo titulo que tienes para "nombres" (Hoja1 D1 ?, o el campo que requieras para filtrar)
b) en la celda A2 vas a "solicitar" el nombre/id/codigo/... que requieras consultar
c) en el rango A4:C4 vas a poner los mismos "titulos" que tienes en las columnas D, F y H de la hoja2
d) copia/pega (o escribe) las siguientes lineas => en el modulo de codigo de la hoja1:
(haz un clic-secundario sobre la etiqueta con su nombre y selecciona "ver codigo")

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$2" Then Exit Sub
Worksheets("hoja1").Range("a1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("a1:a2"), _
CopyToRange:=Range("a4:c4"), _
Unique:=False
End Sub

tambien existen conversaciones que tratan el uso de filtros avanzados por codigo: http://tinyurl.com/ly8xh7

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

__ OP __
En una base de datos en Excel (2003) sobre la facturación de mi empresa que periódicamente cambia y actualizo
utlilizo BUSCARV para extraer diversos datos basandome en la referencia de cliente.
Ocurre que si quiero saber todos los artículos (columna G - (nº 7) "Articulo") que ha consumido un cliente
al poner la referencia en la fórmula BUSCARV, por ejemplo:
BUSCARV(E3,basearticulojunio09;5 falso); "solo" me devuelve el articulo de la celda G3 y sin embargo
puede ocurrir que hayan mas articulos consumidos en G4, G5, G6, etc.
(hasta un INDETERMINADO número de filas dependiente del mes de facturación.)
Sé que existen las tablas dinámicas que yo no domino muy bien, pero en este caso no me serviría porque
se trata de "llevar" los datos a una plantilla de análisis que tengo para conocer muchos datos respecto a un cliente...
a partir de la celda B18, quiero poner los articulos consumidos en un determinado periodo).
He pensado en grabar una macro que haga un filtro en la columna E ("Cliente") del dato elegido de un cuadro de lista
donde figuren dichas referencias de clientes y así copiar las columnas con los datos que me interesan
(variables en la cantidad de filas y no sé como se hace) para posteriormente pegarlas en el reverso de la ficha ...
Respuesta Responder a este mensaje
#2 José Rafael
14/07/2009 - 15:00 | Informe spam
Hola Héctor:
He tenido que cambiar algo sin importancia pero finalmente funciona.
Simplemente que el código lo he puesto sobre el modulo de la hoja2.
Resulta que si en la celda A2 no hay nada extrae toda la base de datos lo
cual me vale también.
Ahora me gustaría que cambiaras estas "cosas":
Que el valor de $A$2 lo tomara o fuera el de la celda F6 de la hoja "Ficha"
.
Que la hoja1 se llame "basefacturación" y que sus columnas L-K-P-Q-S son las
que contienen los datos para traer y
copiar a la Hoja llamada "Reverso ficha" primera celda a recibir el dato
²0 y sucesivas C20-E20-F20-G20
Todas en el mismo libro. ¿es posible?
Saludos
Jose Rafael

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

usa los filtros avanzados por codigo para "refrescar" los datos que
consultes en cada ocasion
(p.e.) suponiendo que:

-> en tu hoja1:
los titulos estan en la fila 1, por lo que tus registros inician en la
fila 2

-> en la hoja2:
a) pon en A1 el mismo titulo que tienes para "nombres" (Hoja1 D1 ?, o
el campo que requieras para filtrar)
b) en la celda A2 vas a "solicitar" el nombre/id/codigo/... que
requieras consultar
c) en el rango A4:C4 vas a poner los mismos "titulos" que tienes en las
columnas D, F y H de la hoja2
d) copia/pega (o escribe) las siguientes lineas => en el modulo de
codigo de la hoja1:
(haz un clic-secundario sobre la etiqueta con su nombre y
selecciona "ver codigo")

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$2" Then Exit Sub
Worksheets("hoja1").Range("a1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Range("a1:a2"), _
CopyToRange:=Range("a4:c4"), _
Unique:=False
End Sub

tambien existen conversaciones que tratan el uso de filtros avanzados por
codigo: http://tinyurl.com/ly8xh7

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

__ OP __
En una base de datos en Excel (2003) sobre la facturación de mi empresa
que periódicamente cambia y actualizo
utlilizo BUSCARV para extraer diversos datos basandome en la referencia
de cliente.
Ocurre que si quiero saber todos los artículos (columna G - (nº 7)
"Articulo") que ha consumido un cliente
al poner la referencia en la fórmula BUSCARV, por ejemplo:
BUSCARV(E3,basearticulojunio09;5 falso); "solo" me devuelve el articulo
de la celda G3 y sin embargo
puede ocurrir que hayan mas articulos consumidos en G4, G5, G6, etc.
(hasta un INDETERMINADO número de filas dependiente del mes de
facturación.)
Sé que existen las tablas dinámicas que yo no domino muy bien, pero en
este caso no me serviría porque
se trata de "llevar" los datos a una plantilla de análisis que tengo para
conocer muchos datos respecto a un cliente...
a partir de la celda B18, quiero poner los articulos consumidos en un
determinado periodo).
He pensado en grabar una macro que haga un filtro en la columna E
("Cliente") del dato elegido de un cuadro de lista
donde figuren dichas referencias de clientes y así copiar las columnas
con los datos que me interesan
(variables en la cantidad de filas y no sé como se hace) para
posteriormente pegarlas en el reverso de la ficha ...




Respuesta Responder a este mensaje
#3 Héctor Miguel
15/07/2009 - 01:57 | Informe spam
hola, José Rafael !

... me gustaria que cambiaras estas "cosas":


__ 1 __
Que el valor de $A$2 lo tomara o fuera el de la celda F6 de la hoja "Ficha".


__ 2 __
Que la hoja1 se llame "basefacturacion" y que sus columnas L-K-P-Q-S son las que contienen los datos para traer


__ 3 __
y copiar a la Hoja llamada "Reverso ficha" primera celda a recibir el dato ²0 y sucesivas C20-E20-F20-G20




1) en la hoja "ficha" deberas poner en la celca [F5] el titulo de columna de la BD cuyo contenido solicitaras en la celda [F6]
2) los titulos de la hoja "basefacturacion" de las columnas L, K, P, Q y S son los que deberas copiar (exactamente) a...
3) las celdas del rango [B19:G19] de la hoja "reverso ficha" deberan contener el mismo titulo que las celdas del punto anterior

el codigo deberas ponerlo en el modulo de la hoja "ficha" (donde cambias el pedido en la celda [F6])

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$F$6" Then Exit Sub
Worksheets("basefacturacion").Range("a1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("ficha")Range("f5:f6"), _
CopyToRange:=Worksheets("reverso ficha")Range("b19:g19"), _
Unique:=False
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#4 José Rafael
19/07/2009 - 09:45 | Informe spam
Un millón de gracias. Ya me funciona como quería.
No sé que haríamos sin tí, Héctor. Gracias de nuevo
Saludos
Jose Rafael


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

... me gustaria que cambiaras estas "cosas":


__ 1 __
Que el valor de $A$2 lo tomara o fuera el de la celda F6 de la hoja
"Ficha".


__ 2 __
Que la hoja1 se llame "basefacturacion" y que sus columnas L-K-P-Q-S son
las que contienen los datos para traer


__ 3 __
y copiar a la Hoja llamada "Reverso ficha" primera celda a recibir el
dato ²0 y sucesivas C20-E20-F20-G20




1) en la hoja "ficha" deberas poner en la celca [F5] el titulo de columna
de la BD cuyo contenido solicitaras en la celda [F6]
2) los titulos de la hoja "basefacturacion" de las columnas L, K, P, Q y S
son los que deberas copiar (exactamente) a...
3) las celdas del rango [B19:G19] de la hoja "reverso ficha" deberan
contener el mismo titulo que las celdas del punto anterior

el codigo deberas ponerlo en el modulo de la hoja "ficha" (donde cambias
el pedido en la celda [F6])

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$F$6" Then Exit Sub
Worksheets("basefacturacion").Range("a1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("ficha")Range("f5:f6"), _
CopyToRange:=Worksheets("reverso ficha")Range("b19:g19"), _
Unique:=False
End Sub

saludos,
hector.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida