Herramientas en Excel

3 formas de Colocar un Rango en un Array (matriz)

Raymundo Ycaza
#Excel Avanzado#Macros (VBA)#馃 Automatizaci贸n con Excel

Si has luchado tratando de meter un conjunto de celdas dentro de un array, usando macros, tal vez te pueda ayudar este consejo en el que te muestro c贸mo puedes hacerlo con una sola l铆nea de c贸digo.

En el ejemplo que voy a usar, quiero transferir los datos existentes en el rango A1:C10 a un array o matriz, usando c贸digo VBA.聽Te mostrar茅 tres formas de hacerlo y t煤 elegir谩s la forma que mejor se adapte al proyecto que est谩s realizando. 驴De acuerdo? Muy bien, 隆empecemos!

Rango en un Array

Un rango en un array: El m茅todo 鈥渢edioso鈥

Tal vez la primera opci贸n que se te venga a la mente, seria la de utilizar un contador con un bucle for/next e ir alimentando la matriz de esta manera.

Este m茅todo es completamente v谩lido y en muchas ocasiones el mejor m茅todo (o el 煤nico) y se realizar铆a as铆:

Sub Transferir() Dim MiMatriz(1 To 10, 1 To 3) Dim i As Integer, j As Integer For i = 1 To 10 For j = 1 To 3 MiMatriz(i, j) = Worksheets(鈥淗oja1鈥).Cells(3 + i, j + 1).Value Next j Next i End Sub

Lo que estoy haciendo aqu铆, es decirle a Excel que tengo una matriz llamada 鈥楳iMatriz鈥 con 10 filas y 3 columnas.

Luego, tengo que recorrer las 10 filas con el primer bucle for y, por cada fila, debo recorrer cada una de las 3 columnas del rango.

Rango en un Array

En cada iteraci贸n (cada vuelta) voy a asignar al elemento actual de mi matriz, el valor de la celda en la que me encuentro y as铆 llenar茅 toda mi matriz.

隆F谩cil! 驴Verdad? Aunque a algunos puede parecerle un poco tedioso.

Un m茅todo 鈥榙irecto鈥 (en una sola l铆nea de c贸digo)

Si te gustan las cosas sin muchas vueltas, el m茅todo directo puede resultar de inter茅s para ti.

Si utilizas esta forma de asignar un rango a una matriz, podr谩s hacerlo en una sola l铆nea de c贸digo:

Dim MiMatriz As Variant

MiMatriz = Range(鈥淎1:C10鈥)

Esta otra forma, tambi茅n vale鈥

Dim MiMatriz As Variant

MiMatriz = [A1:C10]

[resaltar]Un dato que debes tener en cuenta, es que si declaras la variable MiMatriz como una matriz, el c贸digo te dar谩 error.[/resaltar]

驴Y c贸mo recupero los valores espec铆ficos de una matriz?

Si quisieras, por ejemplo, recuperar el valor que tienes en la fila n煤mero 2, columna 3, debes apuntar a esta misma posici贸n en tu matriz, as铆:

MsgBox MiMatriz(2,3)

Esto mostrar谩 un mensaje con el contenido de la posici贸n deseada, es decir, lo que ten铆as originalmente en la columna C2 ;)

Rango en un Array

Comparte esta entrada.

Ahora ya tienes una nueva forma de acometer tus trabajos con matrices en Excel. Como siempre te digo, pon en pr谩ctica lo aprendido ahora mismo. Es la mejor forma de aprender.

Si te ha resultado de inter茅s esta entrada, ay煤dame a difundirla a trav茅s de las redes sociales. Significar铆a mucho para mi :D

隆Nos vemos!

[firma]

鈫 Regresar al Blog