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

#1 KL
16/04/2006 - 11:43 | Informe spam
Hola Adolfo,

Prueba con esto:

MiMatriz = [B4:D13]

o bien

MiMatriz = Range("B4:D13")

y tambien funciona al reves:

[G4:I13] = MiMatriz

o bien

Range("G4:I13") = MiMatriz

Saludos,
KL


"Adolfo Aparicio" wrote in message news:
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

Respuesta Responder a este mensaje
#2 luka
16/04/2006 - 12:06 | Informe spam
Hola Adolfo,
No sé si hay un método mas directo y/o menos costoso
yo no trabajo en estos casos con grandes cantidades de datos y utilizo
algo como esto

Sub pasardatos()
Dim mimatriz(1 To 10, 1 To 2)
Dim i As Integer, j As Integer
For i = 1 To 10
For j = 1 To 2
mimatriz(i, j) = Worksheets("Hoja1").Cells(3 + i, j + 1).Value
Next j
Next i
End Sub

Saludos
Javier B.

Adolfo Aparicio escribió:
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

Respuesta Responder a este mensaje
#3 Adolfo Aparicio
16/04/2006 - 12:29 | Informe spam
Gracias KL. Como siempre funcionó a la perfección.
Respuesta Responder a este mensaje
#4 Adolfo Aparicio
16/04/2006 - 12:48 | Informe spam
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




"luka" escribió:

Hola Adolfo,
No sé si hay un método mas directo y/o menos costoso
yo no trabajo en estos casos con grandes cantidades de datos y utilizo
algo como esto

Sub pasardatos()
Dim mimatriz(1 To 10, 1 To 2)
Dim i As Integer, j As Integer
For i = 1 To 10
For j = 1 To 2
mimatriz(i, j) = Worksheets("Hoja1").Cells(3 + i, j + 1).Value
Next j
Next i
End Sub

Saludos
Javier B.

Adolfo Aparicio escribió:
> 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
>

Respuesta Responder a este mensaje
#5 luka
16/04/2006 - 13:00 | Informe spam
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
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida