Excel - matrices...

   
Vista:
Imágen de perfil de guihe

matrices...

Publicado por guihe (35 intervenciones) el 15/04/2009 01:04:36
Hola a todos....
tengo un problema con una matriz en VB, ya he hecho alguna que otra macro y me voy defendiendo (gracias a este foro), pero nunca había hecho matrices.
El caso es que he definido una matriz de 3 dimensiones y la redimensiono según los registros que introduzca como dato.
Es decir si A=80 y B=60 yo quiero una matriz de 3 columas y AxB = 4800 registros.
para la 'columna 1' que quiero que sea un identificador (nº correlativo) si he conseguido el código:

ptos=A*B
dim coord()
redim coord(ptos,3)
For i = 1 To ptos
coord(i, 1) = i
Cells(i + 1, 1) = coord_ORTO(i, 1) 'esto es para verlo sobre la hoja de Excel
Next i

pero para definir los registros de la segunda y tercera columna no sé como hacerlo. Lo que quiero es que en la segunda me repita 60 (valor de B) veces 1, luego 60 veces 2, luego el 3.... hasta el 80 (valor de A). y en la tercera los valores 1,2,3,4,5....60, y esta serie 80 veces.
ID X Y
1 1 1
2 1 2
3 1 3
4 1 4
.. 1 ..
60 1 60
61 2 1
62 2 2
63 2 3

Bueno espero haberme explicado.... y muchas gracias de antemano.
guihe
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:matrices...

Publicado por Santiago (193 intervenciones) el 15/04/2009 06:12:05
Hola, te doy los siguientes pasos:
La celda A2: A:
La celda B2: 80

La celda A3: B:
La celda B3: 60

La celda A5: ID
La celda B5: X
La celda C5: Y

Y pone el modulo:
Sub Matrices()
A = Cells(2, 2)
B = Cells(3, 2)
fila = 6
contador = 1
For X = 1 To A
For Y = 1 To B
Cells(fila, 1) = contador
Cells(fila, 2) = X
Cells(fila, 3) = Y
fila = fila + 1
contador = contador + 1
Next Y
Next X
End Sub

Espero que te sirva mucho :)

Un saludo desde Ambato, Ecuador
SCM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de guihe

RE:matrices...

Publicado por guihe (35 intervenciones) el 20/04/2009 13:51:30
YASTA!!!! lo he conseguido, pongo el codigo para futuras consultas.


Dim coord_ORTO()
ReDim coord_ORTO(1 To ptosObj, 3)
Incx=1

mallaX = 1
mallaY = 1
'*** BUCLE PARA LA COLUMNA 1 * * * *
For i = 1 To ptosObj
coord_ORTO(i, 1) = i
Cells(i, 1) = coord_ORTO(i, 1)
Next i
'*** BUCLE PARA LA COLUMNA 2 * * * *
salto2 = 1
mallaX = IncX
For n = 1 To gridY
For k = salto2 To salto2 + gridX - 1
coord_ORTO(k, 2) = mallaX
mallaX = mallaX + IncX
Next k
salto2 = (gridX * (n - 1)) + (gridX + 1)
mallaX = IncX
Next n
'*** BUCLE PARA LA COLUMNA 3 * * * *
salto1 = 1
For m = 1 To gridY
For j = salto1 To salto1 + (gridX - 1)
coord_ORTO(j, 3) = mallaX
Next j
salto1 = (gridX * (m - 1)) + (gridX + 1)
mallaX = mallaX + IncX
Next m
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de guihe

RE:matrices...

Publicado por guihe (35 intervenciones) el 20/04/2009 13:53:50
YASTA!!!! lo he conseguido, pongo el codigo para futuras consultas.


Dim coord_ORTO()
ReDim coord_ORTO(1 To ptosObj, 3)
IncX=1
IncY=1
mallaX = 1
mallaY = 1
'*** BUCLE PARA LA COLUMNA 1 * * * *
For i = 1 To 4800
coord_ORTO(i, 1) = i
Cells(i, 1) = coord_ORTO(i, 1)
Next i
'*** BUCLE PARA LA COLUMNA 2 * * * *
salto2 = 1
mallaX = IncX
For n = 1 To 60
For k = salto2 To salto2 + 80 - 1
coord_ORTO(k, 2) = mallaX
mallaX = mallaX + IncX
Next k
salto2 = (80 * (n - 1)) + (80 + 1)
mallaX = IncX
Next n
'*** BUCLE PARA LA COLUMNA 3 * * * *
salto1 = 1
For m = 1 To 60
For j = salto1 To salto1 + (80 - 1)
coord_ORTO(j, 3) = mallaX
Next j
salto1 = (80 * (m - 1)) + (80 + 1)
mallaX = mallaX + IncX
Next m
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar