Crear una matriz en VB.

Hola,
Quisiera general una matriz en VB, tengo una hoja de excel con 3000 filas aproximadamente, con los campos siguientes: Numero de móvil (varios registros), Nombre de la persona, Código departamento (varios departamentos), Nombre departamento, doce columnas de meses y una de total.
Lo que deseo hacer es generar en VB una matriz que me acumule por cada código de departamento, el numero de móvil y el nombre y el consumo total.Al final de código de departamento me de el total consumido.
El registro a rellenar podría ser:
Código departamento (ocurre 300 veces)
Nombre código departamento
Importe total código departamento
Numero móvil (ocurre 100 veces)
Nombre propietario móvil
Importe total numero móvil
Una vez tenga rellenada la matriz leela y sacarla en otra hoja independiente.
Perdona por el rollo, pero necesito sacar esa información.
P.D. Si dispones de algún manual de macros y excel con VB, ¿me lo podrías mandar?, o ejemplos sobre matrices en VB con respecto a excel.
Muchao gracia
Muchas gracias

1 respuesta

Respuesta
1
A decir verdad, me resulta difícil encontrar una razón para reproducir -vía VBA- lo que ya hace MS Excel en forma natural...
Cabe aclarar que dado que MS Excel usa un lenguaje de programación de nivel más bajo que VBA, siempre será más rápido y eficiente que cualquier macro.
Por esta razón y por exceder en utilidades a lo que solicitas te explico a continuación cómo resolver tu problema con una tabla dinámica.
Una Tabla Dinámica es una herramienta de MS Excel para obtener un reporte agrupado de distintas maneras basado en datos incluidos en una tabla o base de datos.
Es dinámica porque, una vez armada, permite agregar, mover, o eliminar campos en ella hasta lograr el reporte deseado.
Para armarla, sigue los siguiente pasos:
¿1.? Es necesario que cada columna tenga un titulo único, aún aquellas que estuvieran vacías.
Selecciona tu lista desde esta primera fila (títulos) hasta el último registro en ella. Continúa resaltando este rango para que futuros registros (if any)se incluyan en la Tabla dinámica.
Mantenla seleccionada.
2. - Pulsa el botón en "Datos" encontrado en la barra del menú principal y selecciona "Asistente de tabla dinámica".
3. - Una ventana pide seleccionar la fuente de los datos. Marca "Lista o base de datos de MS Excel".
4. - Si hubieras dejado tu rango seleccionado, se asumirá ésta como la base de datos fuente. En caso contrario, puedes seleccionar el área en este paso.
5. - Si usas una versión de Office 97 se mostrarán los títulos de las columnas en el próximo paso (en versiones posteriores, pulsa el botón Diseño). Verás, por ejemplo:
Numero de móvil
Nombre de la persona
Código departamento
Nombre departamento
Enero
Febrero
Marzo
...
Diciembre
Total
6. - El próximo paso depende de ti, porque esto es muy "personalizable". Sólo tienes que arrastrar etiquetas al área donde quieres que ellas sean mostradas.
Por ejemplo:
- Arrastra la etiqueta "Código departamento" al área de FILAS.
Pulsa dos veces el botón en la etiqueta arrastrada y marca "Ninguno" para "Totales"
- Arrastra la etiqueta "Nombre departamento" también al área de FILAS.
Pulsa dos veces el botón en la etiqueta arrastrada y marca "Automático" para "Totales", si no lo estuviera ya.
- Arrastra la etiqueta "numero móvil" al área de FILAS.
- Arrastra la etiqueta "Nombre de la persona" al área de FILAS.
Pulsa dos veces el botón en estas dos últimas etiquetas arrastradas y marca "Ninguno" para "Totales"
- Arrastra cada una de las etiquetas de meses al área de DATOS, si te interesa un detalle mensual de los importes. Caso contrario, deja sólo allí la de "Total"
Escoge a operador de la Suma.
(Nota: otras funciones posibles sobre campos numéricos son:
Contar
Promedio
Min
Max
Producto
Contar Números
Desvest
Desvestp
Var
Varp)
Presiona el botón "Siguiente"
7. - Selecciona dónde poner la tabla dinámica (puede ser en una hoja nueva, como solicitabas) y aprieta el botón del "Terminar".
Así conseguirás una tabla donde se consolidará los importes de cada mes (si lo hubieras colocado allí) por cada movil/propietario, y un subtotal por cada departamento.
Esto se parece bastante a lo que solicitabas y, como ves, no es necesaria ni una sola línea de programación.
Una ventaja adicional es que no es necesario repetir este procedimiento cada vez que cambien, se agreguen o quiten, datos de la base.
Bastará actualizar la tabla dinámica, con botón derecho del mouse sobre ella y eligiendo la opción "Actualizar datos"
Espero que mi extensa explicación haya sido clara.
De todos modos, existen artículos sobre ellas aunque suelen estar en Inglés.
Si esto no es un obstáculo, el mejor que pude encontrar está en:
http://www.techrepublic.com/article.jhtml?id=r00320001218det03.htm
También puedes ver:
http://www.nulook.uneb.edu/train/tutorial/Spreadsheets/excel97/pivot.html
Asegurate de copiar la dirección completa a tu navegador (si la pega desde aquí, a veces, suele cortarse)
---
Respecto al manual de Macros, hubiera ayudado que me indicaras una dirección dónde enviártelo.
De cualquier forma, el que tengo, lo obtuve de www.cybercursos.com.
Supongo que será como los que se ofrecen aquí y no sería de extrañar que ya lo tengas.
Como es un archivo tipo PDF necesitarás el Acrobat Reader para poder verlo. Si no lo tuvieras, no hay problema, es de distribución gratuita y puedes bajarlo de http://www.adobe.com/products/acrobat/readstep2.html
Hasta donde pude ver, contiene un material interesante.
Tal vez quieras explorar estos sitios en busca de otras fuentes:
Este es un buen sitio, en castellano, para empezar:
http://www.portalvb.com/CursosVBAAp.asp?Ap=0000
también, hallarás algo aquí:
http://www.excel-vba-access.com/vba-excel-tips-intro.htm
http://www.uv.es/~perezsa/docencia/material/AdeitVBA/Word/ExcelVBA/
Espero que toda esta información te sirva y ayude a resolver tu problema.
°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
A cambio de mi tiempo, sólo te pido dos cosas:
- Finaliza (con puntaje y comentario) esta pregunta
- Ingresa al sitio www.porloschicos.com y, si quieres,
presiona el botón de donación (es gratis).
Confío en que lo harás.
Fernando, muchas gracias por la explicación, el tema de tablas dinámicas, ya me lo había planteado pero el problema que tengo que al ejecutarlo desde una macro, el numero de registros va variando. Muchísimas gracias por la información y las direcciones voy a echarlas un vistazo.
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas