Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Uso de Arreglos en VBA

| 6 comentarios

Los arreglos son un conjunto de elementos que tienen el mismo tipo de datos y que están ordenados secuencialmente. Cada elemento de una matriz posee un número de índice único que lo identifica. Además, Los cambios efectuados a un elemento de una matriz no afectan a los demás elementos. Para definir un arreglo unidimensional se coloca lo siguiente:

Dim arreglo(INTERVALO) As TIPO

Donde INTERVALO indicará el menor índice y el mayor índice del arreglo. Por ejemplo, si quiero definir un arreglo que almacene 20 datos enteros (variando sus valores entre 0 y 255), entonces lo haré de la siguiente manera, Dim A(1 To 20) As Byte, esto indicará que el sistema debe separar 20 casilleros para almacenar 20 enteros de tipo Byte entre 0 y 255. Cuando quiero almacenar el valor 18 en la posición 9 del arreglo anterior "A" entonces debemos colocar A(9)=18.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

18

Para llenar un arreglo con datos desde una hoja de Excel, se usa el siguiente subprograma:

Sub llena_arreglo (ByRef A() As Byte, ByVal N As Byte)
Dim I As Byte
For I=1 To N
A(I)=Range("B"&I)
Next
End Sub

En el programa anterior, "N" indica el número de elementos que tiene el arreglo (que no necesariamente será el número 20, pero de todas formas será un número menor igual a 20) y este número de elemento no puede ser mayor del que se colocó en la declaración del DIM usado en el Subprograma "Principal".  Es importante mencionar que para pasar como parámetro un arreglo se debe usar siempre la palabra ByRef (nunca ByVal). También debe recordarse que en un arreglo todos los datos son del mismo tipo.

EJEMPLO: Si se desea crear un subprograma que calcule el promedio de notas de un conjunto de alumnos cuyos datos se muestran en una hoja de excel de la siguiente manera. En la celda B1 se encuentra el número de alumnos (10 alumnos), de la celda A4 a la A13 se encuentra la numeración de los alumnos, formando una columna 1,2,3,4,5...10. En la siguiente columna desde la celda B4 hasta la B13 se ubican las respectivas notas de los alumnos y finalmente en la celda E4 se encuentra el promedio de notas.

Sub principal()
Dim N As Byte, promedio As Single
Dim A(1 To 10) As Byte
N=Range("B1")
Call llenar_arreglo(A,N)
promedio=calc_promedio(A,N)
Range("E4")=promedio
End Sub

Sub llenar_arreglo(ByRef A() As Byte, Byval N As Byte)
Dim I As Byte
For I=1 To N
A(I)=Range("B"&I+3)
Next
End Sub

Function calc_promedio(ByRef A() As Byte, ByVal N As Byte) As Single
Dim I As Byte, suma As Single
suma=0
For I=1 To N
suma=suma+A(I)
Next
calc_promedio=Round((Suma/N),1)
End Function

Elaborado por: Franko Vilchez Marcos

6 comentarios

  1. Ejemplo ilustrativo que explica la teoría de arreglos.

    • Quiero hacer un arreglo de un bingo, osea; 6 tablas, del bingo tradiciona,l en una hoja pero que no se repitan los números en cada una de las tablas, como podría hacerlo

  2. Los arreglos unidimensionales o bidimensionales (otros los usamos en vectores, matrices) observo aquí en VBA que esa dimensión es fija, por decir: libros (10), columna(2,5) etc,. no se puede redimensionar en el mismo procedimiento.?

    • puedes utilizar redim por ejemplo:

      dim A() as byte
      N=cells(1,1)
      redim A(N)

  3. tengo un conjunto de matrices las cuales a cada fila y columna lo he puesto un código, resulta que hay matrices que tienen códigos en comun, lo que deseo es es sumar esos elementos en la nueva matriz ensamblada, bueno la nueva matriz emsamblada biene a ser más grande que las matrices individuals. como programo con macros en excel estas matrices.

  4. hola buenas tardes
    me ayudarían con una practica
    ENSAMBLAR n MATRICES DE 6x6
    "cada matriz tiene diferentes vectores de colocación (f,c) y si los vectores de colocación coinciden =suma"

Deja una respuesta

Los campos requeridos estan marcados con *.