Transferir los datos de un Rango a un Array

16/04/2006 - 11:20 por Adolfo Aparicio | Informe spam
Hola amigos.

En VBA para transferir el contenido de una matriz a un rango se utiliza
FormulaArray.
Me gustaría saber si existe algún método para hacer lo contrario, esto es,
transferir los datos de un rango a un Array.

Por ejemplo. Imaginar que el rango es B4:D13 y esta lleno de datos (algunos
numéricos y otros alfanuméricos). Queremos trasladar todos los datos a la
matriz X de dimensión X(1 to 10, 1 to 3).


Gracias por vuestra ayuda.

Adolfo Aparicio
http://www.excelavanzado.com

Preguntas similare

Leer las respuestas

#6 KL
16/04/2006 - 13:54 | Informe spam
Hola luka,

Si ningun problema:

Sub test()
Dim x
x = [B18:F28]
[H1]= x(1, 1)
End Sub

Saludos,
KL


"luka" <luka79arrobatelefonica.net> wrote in message news:uP4a%
Hola de nuevo
En este caso, ¿como se recupera el valor de una celda concreta?
imagina que yo quiero después coger el valor de la celda
B18 (en la matriz seria el 1,1) y ponerlo en la celda H1

Saludos
Javier B.
Adolfo Aparicio escribió:
La de ir pasando los datos uno a uno, es la solución clásica, pero
efectivamente tenia que existir alguna más directa, y la que nos ha propuesto
KL es formidable. Yo la habia probado pero definiendo la variable como una
matriz, y en ese caso no funciona.

Me explico. Si purebas las tres siguientes macros:

Sub Matrix1()
Dim X(11, 5)
X = Range("B18:F28")
End Sub

Sub Matrix2()
Dim X As Double
X = Range("B18:F28")
End Sub

Sub Matrix3()
Dim X As Variant
X = Range("B18:F28")
End Sub

comprobarás que las dos primeras macros dan error. La que funciona bien es
la tercera.

Gracias luka por la respuesta aportada al foro. Un saludo.

Adolfo Aparicio
www.excelavanzado.com


Respuesta Responder a este mensaje
#7 Adolfo Aparicio
16/04/2006 - 16:05 | Informe spam
Siguiendo con el tema de la Matriz que toma los valores de un Rango. ¿Cómo se
puede saber la dimensión de la matriz creada?.

Me explico. Estoy creando una función, como esta:

Function MiRef(Rng)
Dim X
X = [Rng]
'..
End Function

Para tratar los elementos de la matriz debo conocer su dimensión. Por
ejemplo, sería interesante saber si tiene 10 filas y 4 columnas, o la
dimensión de la que se trate. ¿Cómo saber esto?.

Adolfo Aparicio
http://www.excelavanzado.com
Respuesta Responder a este mensaje
#8 KL
16/04/2006 - 21:13 | Informe spam
Hola Adolfo,

Se me ocurren dos formas:

1) tomar las dimensiones del rango a la hora de asignar:

Function test1(rng As Range) As String
Dim Matriz, x As Long, y As Long
Matriz = rng
x = rng.Columns.Count
y = rng.Rows.Count
test1 = "Matriz ( 1 To " & y & " , 1 To " & x & ")"
End Function

2) tomar las dimensiones de la matriz:

Function test2(rng As Range) As String
Dim Matriz, x As Long, y As Long
Matriz = rng
x = UBound(Matriz, 2)
y = UBound(Matriz, 1)
test2 = "Matriz ( 1 To " & y & " , 1 To " & x & ")"
End Function


Saludos,
KL


"Adolfo Aparicio" wrote in message news:
Siguiendo con el tema de la Matriz que toma los valores de un Rango. ¿Cómo se
puede saber la dimensión de la matriz creada?.

Me explico. Estoy creando una función, como esta:

Function MiRef(Rng)
Dim X
X = [Rng]
'..
End Function

Para tratar los elementos de la matriz debo conocer su dimensión. Por
ejemplo, sería interesante saber si tiene 10 filas y 4 columnas, o la
dimensión de la que se trate. ¿Cómo saber esto?.

Adolfo Aparicio
http://www.excelavanzado.com


Respuesta Responder a este mensaje
#9 Adolfo Aparicio
16/04/2006 - 23:07 | Informe spam
Perfecto KL, como siempre.

Gracias por tu ayuda.

Adolfo Aparicio
http://www.excelavanzado.com
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida