Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

De matriz a vector

36 views
Skip to first unread message

Gastón

unread,
Sep 6, 2009, 10:39:01 AM9/6/09
to
Desearia me puedan ayudar en esto. En una macro de Excel tengo:

Sub Tras1024()
Dim Datos(1 To 1000, 1 To 10) As String
Dim Vector(1 To 1000) As String
'...
For i = 1 To 1000
Vector(i) = Datos(i, 1)
Next i
'...
End Sub

Es decir: en algún momento del procedimiento necesito transferir 1000 datos
de texto desde Datos() a Vector().

¿Existe una alternativa más rápida que el For-Next para hacerlo?
Agradeceré cualquier sugerencia.

H�ctor Miguel

unread,
Sep 6, 2009, 7:57:50 PM9/6/09
to
hola, Gast�n !

> En una macro de Excel tengo:
> Sub Tras1024()
> Dim Datos(1 To 1000, 1 To 10) As String
> Dim Vector(1 To 1000) As String
> '...
> For i = 1 To 1000
> Vector(i) = Datos(i, 1)
> Next i
> '...
> End Sub

> Es decir: en algun momento del procedimiento necesito transferir 1000 datos de texto desde Datos() a Vector().
> Existe una alternativa mas rapida que el For-Next para hacerlo? ...

- la fraccion de codigo que comentas, supone que "en algun momento" rellenas (completamente ?) la matriz Datos
- la matriz Datos es de 2 dimensiones, o sea, el equivalente a 1000 filas y 10 columnas
- la matriz Vector es de solo una dimension, o sea, equivale a 1000 filas

lo que no comentas (claramente) es (p.e.)
- si a la matriz Vector requieres transferir SIEMPRE los datos de la columna 1 de la matriz Datos
- o el codigo es "en algun momento" tan flexible como para indicar que se trasfiera de una columna (in)determinada (???)

tambien seria de utilidad si comentas/confirmas/corrijes/... si el uso de las matrices es exclusivamente para vba
y/o si "en algun momento" transfieres los datos de (alg)una de las matrices a celdas/rangos/... en tus hojas (filas o columnas) ???

comentas (si tuvieras) detalles en el tintero ?
saludos,
hector.


Gastón

unread,
Sep 6, 2009, 9:00:02 PM9/6/09
to
Gracias Héctor Miguel por tu interés. En cuanto a lo que me preguntas te
comento:

> - si a la matriz Vector requieres transferir SIEMPRE los datos de la columna 1 de la matriz Datos

SI

> - o el codigo es "en algun momento" tan flexible como para indicar que se trasfiera de una columna (in)determinada (???)

NO

> tambien seria de utilidad si comentas/confirmas/corrijes/... si el uso de las matrices es exclusivamente para vba

SI

y/o si "en algun momento" transfieres los datos de (alg)una de las matrices
a celdas/rangos/... en tus hojas (filas o columnas) ???

NO

En resumen: deseo trabajar con el vector en VBA.
Gracias.

H�ctor Miguel

unread,
Sep 6, 2009, 10:54:55 PM9/6/09
to
hola, Gast�n !

las matrices en vba tambien "merecen" su capitulo aparte
revisa (como "punto de entrada") esta pagina de Chip Pearson:
-> Functions For VBA Arrays
http://www.cpearson.com/Excel/VBAArrays.htm
Arrays, VBA Function Library (30 procedures)

el procedimiento que buscas se llama: CopyArraySubSetToArray
(+/- por el segundo "tercio" de la pagina)

y no te pierdas de pagina de indice otros temas acerca de las matrices (o arrays)
-> http://www.cpearson.com/Excel/Topic.aspx

en via de mientras, y en tanto la declaracion de las variables incluya sus dimensiones => Dim Vector(1 To 1000) As String
no podrias evitar (de manera rapida y transparente) el "llenado" de esa matriz en un bloque For...Next
pero podrias aprovechar el mismo que usas para llenar la otra matriz => Dim Datos(1 To 1000, 1 To 10) As String

(p.e.)

Sub Tras1024()
Dim Datos(1 To 1000, 1 To 10) As String
Dim Vector(1 To 1000) As String

Dim Fila As Integer, Col As Byte
For Col = 1 To 10
For Fila = 1 To 1000
Datos(Fila, Col) = Cells(Fila, Col).Address(0, 0)
If Col = 1 Then Vector(Fila) = Cells(Fila, Col).Address(0, 0)
Next
Next
'...
End Sub

saludos,
hector.

__ OP __

Gastón

unread,
Sep 7, 2009, 10:28:02 AM9/7/09
to
"Héctor Miguel" wrote:

> hola, Gastón !

Ya veo... Te agradezco tus orientaciones y tu tiempo.
Gracias y saludos.

0 new messages