¿Qué es una matriz VBA en Excel? ¿Cómo programar una?

Hola leyente ! Aquí Gabriel con un nuevo tutorial para ustedes !
Espero que les solucione su problema y nos vemos en la próxima

VBA ha sido parte de la suite de 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 realiza en ellos.

Una de las herramientas más poderosas disponibles en VBA es la capacidad de cargar un rango completo de datos en una sola variable llamada matriz. Al cargar datos de esta manera, puede manipular o realizar cálculos en ese rango de datos de diversas formas.

Entonces, ¿qué es una matriz VBA? En este artículo, responderemos esa pregunta y le mostraremos cómo usar uno en su propio script VBA.

¿Qué es una matriz VBA?

Usar una matriz de VBA 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 una caja con secciones en su interior. Una matriz unidimensional es una caja con una línea de secciones. Una matriz bidimensional es una caja con dos líneas de secciones.

Puede poner datos en cada sección de este «cuadro» en el orden que desee.

Al comienzo de su secuencia de comandos VBA, debe definir este «cuadro» definiendo su matriz 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 entre 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. Entonces, la matriz anterior podría contener un rango con 6 filas y 2 columnas.

Puede cargar cualquier elemento de esta matriz con 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 número entre paréntesis también puede ser una variable. Los programadores suelen utilizar un ciclo For para contar 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 VBA en Excel

Echemos un vistazo a un programa simple en el que es posible que desee cargar información de una hoja de cálculo en una matriz multidimensional.

Como ejemplo, veamos una hoja de cálculo de ventas de productos, en la que 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 representación 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 de encabezado, el número de fila en el primer aspecto de For debe comenzar en 2 en lugar de 1. Esto significa que debe restar 1 para el valor de fila de la matriz cuando está cargando el valor de celda en la matriz usando Cells (i, j) .Value.

Dónde insertar su secuencia de comandos de matriz VBA

Para colocar un programa de un script de VBA en Excel, necesita usar el editor de VBA. Puede acceder a esto seleccionando el Desarrollador menú y seleccionando Ver código en la sección Controles de la cinta.

Si no ve el Desarrollador en el menú, deberá agregarlo. Para hacer esto, seleccione Expediente y Opciones para abrir la ventana Opciones de Excel.

Cambie los comandos de elección del menú desplegable a Todos los comandos. Seleccione Desarrollador en el menú de la izquierda y seleccione el Añadir para moverlo al panel de la derecha. Seleccione la casilla de verificación para habilitarlo y seleccione Okay para terminar.

Cuando se abra la ventana 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 cálculo en el menú desplegable de la izquierda y Activar en lo correcto. Esto creará una nueva subrutina llamada Worksheet_Activate ().

Esta función se ejecutará siempre 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á en 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 finalizados ambos bucles For, la matriz bidimensional arrMyArray contiene todos los datos que especificó de la hoja original.

Manipular matrices en Excel VBA

Supongamos que desea aplicar un impuesto sobre las ventas del 5% a todos los precios de venta finales y luego escribir todos los datos en una nueva hoja.

Puede hacer esto agregando otro ciclo 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.

La hoja resultante se verá así.

Como puede ver, las matrices 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 clasificación, promediado o muchas otras funciones con los datos que almacena en ellas.

Si desea ser realmente creativo, puede incluso crear dos matrices que contengan un rango de celdas de dos hojas diferentes y realizar cálculos entre los elementos de cada matriz.

Las aplicaciones están limitadas solo por su imaginación.

Deja un comentario