13 arreglos -tema13

Post on 21-Jan-2018

159 views 0 download

Transcript of 13 arreglos -tema13

Arreglos en 1D (Vectores) y

en 2D (Matrices)

Arreglos

Arreglos en 1D (vectores)

Para lenguajes que inician contando la posición desde cero (0) la estructura

del vector es la siguiente:

Para lenguajes que inician contando la posición desde uno (1) la estructura

del vector es la siguiente:

Declaración de arreglos en 1D en VBA

Para declarar una variable tipo arreglo en VBA primero se debe

conocer que tipo de datos va a guardar la variable por ejemplo :

Integer, double, string, currency, etc.

Después se debe establecer el numero de elementos que va a tener

la variable.

La estructura de declaración es:

Dim Nombre_Variable (Numero de Posiciones) as Tipo de dato

5 8 4 2 1 9Edad=

Dim Edad(5) as Integer

VBA empieza a contar la posición desde 0

Vector con 6

elementos

Otra forma de declarar esta misma variable es:

Dim Edad(0 to 5) as Integer

Generalmente los ingenieros no estamos muy familiarizados con la

posición cero (0) en las matrices y vectores, por esta razón VBA permite

mediante un comando poder inicializar el conteo de la posición desde el

valor de uno (1); para esto se debe poner después de la sentencia Option

Explicit, la sentencia Option Base 1. Con esto se garantiza que los

arreglos inicien desde la posición 1

Option explicit

Option Base 1

5 8 4 2 1 9Edad=

Dim Edad(6) as Integer

VBA empieza a contar la posición desde 1

con la sentencia Option base 1

Vector con 6

elementos

Otra forma de declarar esta misma variable es:

Dim Edad(1 to 6) as Integer

Introducir valores en arreglos en 1D en VBA

Para introducir valores en un arreglo en VBA existen dos formas, la

forma manual o larga y la forma automática o corta.

a) Forma manual o larga

5 8 4 2 1 9

Si usamos la sentencia Option Base 1 la matriz se puede rellenar

manualmente de la siguiente manera:

Edad (1)=5

Edad (2)=8

Edad (3)=4

Edad (4)=2

Edad (5)=1

Edad (6)=9

Elemento 1 del vector Edad es igual a 5

Elemento 6 del vector Edad es igual a 9

Cuando estamos introduciendo vectores o matrices es importante

saber si el vector o matriz se ha guardado u operado

adecuadamente, para esto VBA cuenta con varias formas de

visualización tales como el comando Msgbox, Ventana inmediato y

celdas de Excel.

Usando Msgbox

MsgBox Edad(1)

MsgBox Edad(6)

Usando la ventana inmediato

Para esto debemos activar la ventana inmediato en el menú ver-

ventana inmediato.

El comando para imprimir valores en esta ventana es Debug.Print

Debug.Print Edad(1)

Debug.Print Edad(6)

Usando las celdas de Excel

Cells(1, 1) = Edad(1)

Cells(2, 1) = Edad(6)

Código en VBA

b) Forma automática

Si es un vector corto se puede usar un bucle que a través de un

inputbox vaya pidiendo cada uno de los elementos del vector asi:

Si el vector es demasiado largo lo mas conveniente es leerlo de las

celdas de Excel y guardarlo en el vector de forma automática así:

El objetivo es guardar de forma

automatica en un vector que se

llame Edad estos valores que hay

en la columna A del libro de Excel

Si es un vector o matriz de tamaño desconocido, se declara sin introducir

el tamaño del vector y después se redimensiona con el comando ReDim

Vamos a asumir que el vector es de tamaño desconocido y vamos a ir

escribiendo el código paso a paso asi:

Observemos que se escribe la sentencia Option base 1 para que el

programa empiece a contar los elementos del vector desde la posición 1

Observar que la variable Edad (que es un vector) no tiene un valor

dentro de los paréntesis, esto indica que se va a redimensionar

mas adelante dentro del programa (porque asumimos que el

vector es de tamaño desconocido)

Con este código se obtiene el numero de filas n que esta

ocupando el vector para posteriormente redimensionar la variable

Edad con este valor

Se ubica en la primera celda del vector

Obtiene el valor de la fila inicial

Salta a la ultima fila

Obtiene el valor de la fila final

Calcula el numero total de filas

Redimensiona el vector usando el valor de n

Este código permite seleccionar todo el vector para

posteriormente recorrer cada una de las celdas seleccionadas

Este código va recorriendo cada una de las celdas de la selección y

va guardando el valor de cada celda en la variable Edad en cada

posición i

Con este código puedo imprimir cada valor del vector edad en la

ventana inmediato para poder verificar que lo hizo bien.

Otra opción para poder verificar es escribir el vector guardado en las

celdas de Excel. Esto se hace con el código anterior.

Arreglos en 2D (matrices)

Ejemplo

Declaración de arreglos en 2D en VBA

Para declarar una variable tipo arreglo en 2D en VBA es muy similar

a la declaración en 1D, primero se debe conocer que tipo de datos va

a guardar la variable por ejemplo : Integer, double, string, currency,

etc.

Después se debe establecer el numero de filas y columnas que va a

tener la variable.

La estructura de declaración es:

Dim Nombre_Variable (# de filas, # de columnas)

as Tipo de dato

Al igual que con los vectores, el conteo de filas y columnas empieza por

defecto en (0,0), pero debido a la confusión que esto puede generar para

algunos se puede seguir usando la sentencia option base 1 para que el

conteo inicie en (1,1).

Usando Option base 1 tenemos

(1,1) (1,2) (1,3) (1,4)

(2,1) (2,2) (2,3) (2,4)

(3,1) (3,2) (3,3) (3,4)

Variable=

6 7 8 9

6 9 7 9

8 9 7 6

Cal=

La forma de declarar esta matriz es:

Option Explicit

Option Base 1

Dim Cal(3,4) as Integer

Introducir valores en arreglos en 2D en VBA

Igual que para los vectores, para introducir valores en un arreglo 2D

en VBA existen dos formas, la forma manual o larga y la forma

automática o corta.

a) Forma manual o larga

Si usamos la sentencia Option Base 1 la matriz se puede rellenar

manualmente de la siguiente manera:

Cal (1,1)=6

Cal (1,2)=7

Cal (1,3)=8

Cal (1,4)=9

6 7 8 9

6 9 7 9

8 9 7 6

Cal=

Cal (2,1)=6

Cal (2,2)=9

Cal (2,3)=7

Cal (2,4)=9

Cal (3,1)=8

Cal (3,2)=9

Cal (3,3)=7

Cal (3,4)=6

Para poder verificar que la matriz se ha guardado bien, al igual que con

los vectores se usa el Msgbox, Debug.print y por celdas. (ver el tema de

vectores)

b) Forma automática

Si es una matriz es corta se puede usar un bucle anidado que a

través de un inputbox vaya pidiendo cada uno de los elementos del

vector asi:

Si la matriz es demasiado grande como para introducirla elemento a

elemento, lo mas conveniente es leerla de las celdas de Excel y

guardarla de forma automática así:

El objetivo es guardar de forma automática en una

matriz que se llame Cal estos valores.

Si es un vector o matriz de tamaño desconocido, se declara sin introducir

el tamaño del vector y después se redimensiona con el comando ReDim

Vamos a asumir que la matriz es de tamaño desconocido y vamos a ir

escribiendo el código paso a paso así:

Observemos que se escribe la sentencia Option base 1 para que el programa

empiece a contar los elementos de la matriz desde la posición (1,1)

Observar que la variable cal (que es una matriz) no tiene un valor

dentro de los paréntesis, esto indica que se va a redimensionar

mas adelante dentro del programa (porque asumimos que la

matriz es de tamaño desconocido)

Con este código se obtiene el numero de filas n de la matriz

Se ubica en la primera celda de la matriz

Obtiene el valor de la fila inicial

Salta a la ultima fila

Obtiene el valor de la fila final

Calcula el numero total de filas

Se ubica en la primera celda de la matriz

Obtiene el valor de la columna inicial

Salta a la ultima columna

Obtiene el valor de la columna final

Calcula el numero total de columnas

Con este código se obtiene el numero de columnas m de la matriz

y se redimensiona para un tamaño de nxm.

Redimensiona la matriz para tamaño nxm

Con este For anidado se recorren las filas con el contador i y las

columnas con el contador j. Al ser j el contador mas interno, se

deben primero completar las columnas antes de cambiar a la otra

fila. Cada valor se va guardando en la posición (i,j) de la variable

cal.

Mediante este For anidado se puede escribir la matriz en celdas

de Excel para verificar de que se haya guardado bien en la

variable. Observar que a z se le suma n para evitar que se sobre

escriba sobre la original.