VBA ha sido parte de la suite Microsoft Office durante muchos años. Si bien no tiene la funcionalidad y el poder completos de una aplicación VB completa, VBA brinda a los usuarios de Office la flexibilidad de integrar productos de Office y automatizar el trabajo que usted realiza en ellos.
Una de las herramientas más poderosas disponible en VBA es la capacidad de cargar un rango completo de datos en una sola variable llamada matriz. Al cargar los datos de esta manera, puede manipular o realizar cálculos en ese rango de datos de varias maneras.
Entonces, ¿qué es una matriz VBA? En este artículo, responderemos a esa pregunta y le mostraremos cómo usar una en tu propio script VBA.
¿Qué es una matriz de VBA?
Uso de una VBA La matriz en Excel es muy simple, pero comprender el concepto de matrices puede ser un poco complejo si nunca ha usado una.
Piense en una matriz como un cuadro con secciones dentro de ella. Una matriz unidimensional es un cuadro con una línea de secciones. Una matriz bidimensional es un cuadro con dos líneas de secciones.
Puede poner datos en cada sección de este "cuadro" en el orden que desee.
In_content_1 all: [300x250] / dfp: [640x360]->Al comienzo de su secuencia de comandos VBA, debe definir este "cuadro" definiendo su matriz de VBA. Entonces, para crear una matriz que pueda contener un conjunto de datos (una matriz de una dimensión), debe escribir la siguiente línea.
Dim arrMyArray(1 To 6) As String
Más adelante en su programa, puede colocar datos en cualquier sección de esta matriz haciendo referencia a la sección dentro de paréntesis.
arrMyArray(1) = "Ryan Dube"
Puede crear una matriz bidimensional utilizando la siguiente línea.
Dim arrMyArray(1 To 6,1 to 2) As Integer
El primer número representa la fila, y el segundo es la columna. Por lo tanto, la matriz anterior podría contener un rango con 6 filas y 2 columnas.
Puede cargar cualquier elemento de esta matriz con los datos de la siguiente manera.
arrMyArray(1,2) = 3
Esto cargará un 3 en la celda B1.
Una matriz puede contener cualquier tipo de datos como una variable regular, como cadenas, booleanos, enteros, flotantes y más.
El El número dentro del paréntesis también puede ser una variable. Los programadores suelen usar un bucle For para contar a través de todas las secciones de una matriz y cargar celdas de datos en la hoja de cálculo en la matriz. Verá cómo hacer esto más adelante en este artículo.
Cómo programar una matriz de VBA en Excel
Echemos un vistazo a un programa simple donde es posible que desee cargar información de una hoja de cálculo a una matriz multidimensional.
Como ejemplo, veamos una hoja de cálculo de ventas de productos, donde desea extraer el nombre, el artículo y la venta total del representante de ventas de la hoja de cálculo.
Tenga en cuenta que en VBA cuando hace referencia a filas o columnas, cuenta filas y columnas comenzando desde la parte superior izquierda en 1. Por lo tanto, la columna de rep. es 3, la columna de elementos es 4 y la columna total es 7.
Para cargar estas tres columnas en las 11 filas, deberá escribir el siguiente script.
Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i
Notará que para omitir la fila del encabezado, el número de fila en el primer aspecto debe comenzar en 2 en lugar de 1. Esto significa que debe restar 1 para el valor de la fila de la matriz cuando carga el valor de celda en la matriz usando Celdas (i, j) .Valor.
Dónde insertar su secuencia de comandos VBA Array
Para colocar el programa una secuencia de comandos VBA en Excel, debe usar el VBA editor. Puede acceder a esto seleccionando el menú Desarrolladory seleccionando Ver códigoen la sección Controles de la cinta.
Si no ve el desarrollador en el menú, deberá agrégalo Para hacer esto, seleccione Archivoy Opcionespara abrir la ventana de Opciones de Excel.
Cambie los comandos de selección del menú desplegable a Todos los comandos. Seleccione Desarrolladoren el menú de la izquierda y seleccione el botón Agregarpara moverlo al panel de la derecha. Seleccione la casilla de verificación para habilitarla y seleccione Aceptarpara finalizar.
Cuando se abra la ventana del Editor de Código, asegúrese de que la hoja en la que se encuentran sus datos esté seleccionada en el panel izquierdo. Seleccione Hoja de trabajoen el menú desplegable de la izquierda y Activaren la derecha. Esto creará una nueva subrutina llamada Worksheet_Activate ().
Esta función se ejecutará cada vez que se abra el archivo de hoja de cálculo. Pegue el código en el panel de secuencia de comandos dentro de esta subrutina.
Este script funcionará a través de las 12 filas y cargará el nombre del representante de la columna 3, el artículo de la columna 4 y la venta total de la columna 7.
Una vez que ambos bucles For están terminados, la matriz bidimensional arrMyArray contiene todos los datos que especificó de la hoja original.
Manipulación de matrices en Excel VBA
Supongamos que desea aplicar un impuesto de ventas del 5% a todos los precios de venta finales , y luego escriba todos los datos en una nueva hoja.
Puede hacer esto agregando otro bucle For después del primero, con un comando para escribir los resultados en una nueva hoja.
For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k
Esto "descargará" toda la matriz en Sheet2, con una fila adicional que contiene el total multiplicado por 5% para el monto del impuesto.
El la hoja resultante se verá así.
Como puede ver, las matrices de VBA en Excel son extremadamente útiles y tan versátiles como cualquier otro truco de Excel.
El ejemplo anterior es un uso muy simple para una matriz. Puede crear matrices mucho más grandes y realizar la clasificación, el promedio o muchas otras funciones contra los datos que almacena en ellas.
Si desea obtener una creatividad real, incluso podría crear dos matrices que contiene un rango de celdas de dos hojas diferentes y realice cálculos entre los elementos de cada matriz.
Las aplicaciones están limitadas solo por su imaginación.