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.
> 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.
> - 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.
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 __
> hola, Gastón !
Ya veo... Te agradezco tus orientaciones y tu tiempo.
Gracias y saludos.