Sacar combinaciones

28/06/2007 - 13:26 por César | Informe spam
Hola a todos.

Tengo el siguiente código para sacar todas las combinaciones posibles de
unos valores:

a(1) = "ab" : a(2) = "cd" : a(3) = "ef" : a(4) = "gh" : a(5) = "ij" : a(6) =
"kl" : a(7) = "mn" : a(8) = "op" : a(9) = "qr"

For C1 = 1 To 2
For C2 = 1 To 2
For C3 = 1 To 2
For C4 = 1 To 2
For C5 = 1 To 2
For C6 = 1 To 2
For C7 = 1 To 2
For C8 = 1 To 2
For C9 = 1 To 2
b = Mid(a(1), C1, 1) & Mid(a(2), C2,
1) & Mid(a(3), C3, 1) & Mid(a(4), C4, 1) & Mid(a(5), C5, 1) & Mid(a(6), C6,
1) & Mid(a(7), C7, 1) & Mid(a(8), C8, 1) & Mid(a(9), C9, 1)
Range("A1").Offset(ccc, 0) = b
ccc = ccc + 1
Next
Next
Next
Next
Next
Next
Next
Next
Next

Esto funciona cuando tengo 9 valores pero necesito un código que me funcione
con cualquier número de valores.

Algo que me construya los bucles dinámicamente.

¿Alguna idea?

Gracias anticipadas.

Saludos, César.

Preguntas similare

Leer las respuestas

#1 Juan M
28/06/2007 - 14:47 | Informe spam
Hola César,

Revisa el contenido de esta conversación, por el medio de las respuestas
encontrarás una imagen con el arreglo de una hoja y el código para hacer las
combinaciones y permutaciones

http://tinyurl.com/22orul

Si tienes cualquier duda nos cuentas.

Un saludo,
Juan


"César" escribió en el mensaje
Hola a todos.

Tengo el siguiente código para sacar todas las combinaciones posibles de
unos valores:

a(1) = "ab" : a(2) = "cd" : a(3) = "ef" : a(4) = "gh" : a(5) = "ij" : a(6)
> "kl" : a(7) = "mn" : a(8) = "op" : a(9) = "qr"

For C1 = 1 To 2
For C2 = 1 To 2
For C3 = 1 To 2
For C4 = 1 To 2
For C5 = 1 To 2
For C6 = 1 To 2
For C7 = 1 To 2
For C8 = 1 To 2
For C9 = 1 To 2
b = Mid(a(1), C1, 1) & Mid(a(2),
C2,
1) & Mid(a(3), C3, 1) & Mid(a(4), C4, 1) & Mid(a(5), C5, 1) & Mid(a(6),
C6,
1) & Mid(a(7), C7, 1) & Mid(a(8), C8, 1) & Mid(a(9), C9, 1)
Range("A1").Offset(ccc, 0) = b
ccc = ccc + 1
Next
Next
Next
Next
Next
Next
Next
Next
Next

Esto funciona cuando tengo 9 valores pero necesito un código que me
funcione
con cualquier número de valores.

Algo que me construya los bucles dinámicamente.

¿Alguna idea?

Gracias anticipadas.

Saludos, César.
Respuesta Responder a este mensaje
#2 César
29/06/2007 - 08:38 | Informe spam
Hola Juan

Gracias por tu respuesta, intentaré adaptar la macro a lo que estoy buscando.

Saludos.

"Juan M" wrote:

Hola César,

Revisa el contenido de esta conversación, por el medio de las respuestas
encontrarás una imagen con el arreglo de una hoja y el código para hacer las
combinaciones y permutaciones

http://tinyurl.com/22orul

Si tienes cualquier duda nos cuentas.

Un saludo,
Juan


"César" escribió en el mensaje
> Hola a todos.
>
> Tengo el siguiente código para sacar todas las combinaciones posibles de
> unos valores:
>
> a(1) = "ab" : a(2) = "cd" : a(3) = "ef" : a(4) = "gh" : a(5) = "ij" : a(6)
> > > "kl" : a(7) = "mn" : a(8) = "op" : a(9) = "qr"
>
> For C1 = 1 To 2
> For C2 = 1 To 2
> For C3 = 1 To 2
> For C4 = 1 To 2
> For C5 = 1 To 2
> For C6 = 1 To 2
> For C7 = 1 To 2
> For C8 = 1 To 2
> For C9 = 1 To 2
> b = Mid(a(1), C1, 1) & Mid(a(2),
> C2,
> 1) & Mid(a(3), C3, 1) & Mid(a(4), C4, 1) & Mid(a(5), C5, 1) & Mid(a(6),
> C6,
> 1) & Mid(a(7), C7, 1) & Mid(a(8), C8, 1) & Mid(a(9), C9, 1)
> Range("A1").Offset(ccc, 0) = b
> ccc = ccc + 1
> Next
> Next
> Next
> Next
> Next
> Next
> Next
> Next
> Next
>
> Esto funciona cuando tengo 9 valores pero necesito un código que me
> funcione
> con cualquier número de valores.
>
> Algo que me construya los bucles dinámicamente.
>
> ¿Alguna idea?
>
> Gracias anticipadas.
>
> Saludos, César.



Respuesta Responder a este mensaje
#3 César
29/06/2007 - 13:58 | Informe spam
Hola a todos.

Ya he dado con lo que quería; lo pongo por si le es útil a alguien.

Sub Combinaciones()
' Ejemplo con 5 parejas.
Dim Parejas(1 To 5)
Parejas(1) = "ab"
Parejas(2) = "cd"
Parejas(3) = "ef"
Parejas(4) = "gh"
Parejas(5) = "ij"

For nPasadas = 1 To 2 ^ UBound(Parejas)
Resultado = ""
For pPasadas = 1 To UBound(Parejas)
Resultado = Resultado & (Int((nPasadas - 1) / ((2 ^
UBound(Parejas)) / 2 ^ pPasadas)) Mod 2) + 1
Next
Debug.Print Resultado
Next
End Sub


"César" wrote:

Hola a todos.

Tengo el siguiente código para sacar todas las combinaciones posibles de
unos valores:

a(1) = "ab" : a(2) = "cd" : a(3) = "ef" : a(4) = "gh" : a(5) = "ij" : a(6) =
"kl" : a(7) = "mn" : a(8) = "op" : a(9) = "qr"

For C1 = 1 To 2
For C2 = 1 To 2
For C3 = 1 To 2
For C4 = 1 To 2
For C5 = 1 To 2
For C6 = 1 To 2
For C7 = 1 To 2
For C8 = 1 To 2
For C9 = 1 To 2
b = Mid(a(1), C1, 1) & Mid(a(2), C2,
1) & Mid(a(3), C3, 1) & Mid(a(4), C4, 1) & Mid(a(5), C5, 1) & Mid(a(6), C6,
1) & Mid(a(7), C7, 1) & Mid(a(8), C8, 1) & Mid(a(9), C9, 1)
Range("A1").Offset(ccc, 0) = b
ccc = ccc + 1
Next
Next
Next
Next
Next
Next
Next
Next
Next

Esto funciona cuando tengo 9 valores pero necesito un código que me funcione
con cualquier número de valores.

Algo que me construya los bucles dinámicamente.

¿Alguna idea?

Gracias anticipadas.

Saludos, César.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida