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"
 

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

Preguntas similares