Combinar varios números de una sola cifra...

Me gustaria saber si en excel se podría hacer alguna fórmula para combinar 5 números de una cifra en tres números de dos cifras... Ejemplo, tengo los números: 3, 0, 6, 1, 5 con esos números puedo obtener los números 30, 61, 15, 03, 16, 51, 35, etc. Etc, supongamos que logro obtener 20 o 25 números de dos cifras, pero quisiera combinar esos números de dos cifras en grupo de tres, ejemplo; de la combinaciones que obtuve de una cifra, ligarlas así: 30-61-15, 30-35-03, 16-51-¿61 etc, etc, se podría?

Respuesta
1

·

·

¡Hola Johnny!

A ver si me aclaro.

Tomas 5 cifras distintas

0, 1, 3, 5, 6

Formas sus variaciones tomadas de 2 en 2 que son V(5,2) = 5·4 = 20

01, 03, 05, 06,

10, 13, 15, 16,

30, 31, 35, 36,

50, 51, 53, 56

¿O formas sus variaciones con repetición VR(5,2) = 5^2 =25

Que añadiría 00, 11, 33, 55, ¿66 a las anteriores?

Y luego dices de tomar estos números de tres cifras de tres en tres.

¿Pero tienes que decir cómo se pueden tomar?

a) ¿Se pueden repetir números dentro del trio?

b) ¿Se tiene en cuenta el orden?

Si a) y b) entonces VR(20,3)=8000 o VR(25,3)=15625

Si a) y no b) entonces CR(20,3)=C(22,3)=1540  o CR(25,3)=C(27,3)=2925

Si no a) y b) V(20,3) = 6840  o V(25,3) = 13800

Si no a) y no b) C(20,3)=1140  o  C(25,3)=2300

Y respecto a lo de hacerlo con alguna función de Excel ni en el mejor de los sueños, si acaso con alguna macro en Excel y con bastante esfuerzo de programación.

Espero las aclaraciones.

Saludos.

:

:

Hola Valero, podria decirse que si, pero en el conjunto de dos de arriba faltaria mas numeros, ejemplo 63, 65, 61, y si, era con la idea de que se pudiera hacer en excel...

Saludos Cordiales,

Johnny,

Si, es verdad que se me olvidaron los que empezaban por 6, los 60,61,63,65. Pero esa no es la duda, tienes que decirme estas cosas.

1) ¿Entran el 00, 11, 33, 55, 66 en los números de dos cifras?

2) ¿En las ternas se pueden repetir números?  31-31-31

3) ¿Hay qué poner todas o si están los mismos números solo hay que poner una? Es decir, habria que poner

10-35-60, 10-60-35, 35-10-60, 35-60-10, 60-10-35, 60-35-10

¿O solo con 10-35-60 es suficiente?

Si esas contestaciones son demasidos modelos, necesito concretar.

No estás obligado a valorar la respuesta hasta el final, pero si has querido valorar por adelantado esta pregunta no se contesta por una puntuación de buena solo, lleva trabajo como para puntuarla como Excelente varias veces.

Saludos.

:

:

No, ya con la combinación 10-35-60, es suficiente, en los numero de 2 cifras no entrarían 00, 11, 55 etc, tampoco es necesario repetir números 31-31-31. 

Saludos Cordiales,

Johnny

Como valoro tus repuestas Angel?

Abajo hay unos botones, yo no sé cómo estarán ahora porque hace bastante que no hago preguntas, pero creo que habrá uno que pone excelente, ese es el que debes pulsar.

La respuesta tardará un poco porque tengo bastantes preguntas por contesta, pero ya sé lo que quieres, son las combinaciones de 20 elementos tomadas de 3 en 3. Y estoy capacitado para ello, hace pocos días hice esta macro para una pregunta parecida:

https://drive.google.com/file/d/0B3nG6r7qbZZ_dUtmU1VGSE9DTlU/view?usp=sharing 

Que con alguna pequeña modificación serviría para lo tuyo, pero no se cuántas horas o días tendrás que esperar.

Saludos.

:

:

¡Gracias! 

Esto es lo que hecho, creo que funciona pero lo he probado poco.

Puedes usar las cifras que quieras no solo 5, las añades en la primera fila de izquierda a derecha, donde haya un corte o algo que no sea cifra se paran de contar las cifras.

Tampoco hace falta que lo s grupos sean de 3 parejas, puedes elegir entre 2 y 10.

Cuida no te pases porque pueden salir muchísimas filas y no poder hacerlo el ordenador y quedar un fichero muy grande si lo guardas.

Y aquí lo puedes descargar

https://drive.google.com/file/d/0B3nG6r7qbZZ_SjF5ZFdIdXozQ0E/view?usp=sharing 

Espero que sea lo que querías. Yo te dejo por muchas horas hasta que pueda ver lo que comentes.

Una línea más para que no se coman el enlace.

Saludos

:

:

¡Ah por cierto, esta es la macro por si a alguien le interesa!

Sub Combinar()
'By ValeroASM
Dim i, j, k, fila, colu, nuci, nupare, nupagru As Integer
Dim cifras(9), bolas(89), comprobador(89), combiant(9) As Integer
Dim parejas(89), texto As String
Dim fin As Boolean
i = 0
While InStr("0123456789", Cells(1, i + 1)) <> 0 And Len(Cells(1, i + 1)) = 1 And (i <= 9)
    cifras(i) = Cells(1, i + 1)
    comprobador(i) = cifras(i)
    i = i + 1
Wend
nuci = i
If nuci < 10 Then
    For i = nuci + 1 To 10
        Cells(1, i) = ""
    Next
End If
If nuci < 2 Then Exit Sub
For i = 0 To nuci - 2
    For j = 0 To nuci - 2 - i
        If comprobador(j) > comprobador(j + 1) Then
            k = comprobador(j)
            comprobador(j) = comprobador(j + 1)
            comprobador(j + 1) = k
         End If
    Next
Next
For i = 1 To nuci - 1
    If comprobador(i) = comprobador(i - 1) Then
        res = MsgBox("Número repetido " & comprobador(i), vbCritical)
        Exit Sub
    End If
Next
Cells.Range("A3:J11").Clear
fila = 3: colu = 1: k = 0
For i = 0 To nuci - 1
    For j = 0 To nuci - 1
        If i <> j Then
            Cells(fila, colu) = Str(cifras(i)) + Str(cifras(j))
            parejas(k) = Cells(fila, colu)
            colu = colu + 1: If colu = 11 Then colu = 1: fila = fila + 1
            k = k + 1
        End If
    Next
Next
nupare = k
Cells.Range("L1:L" & Rows.Count).Clear
nupagru = Cells(13, "H")
If nupagru < 2 Or nupagru > 10 Then
    nupagru = 3
    Cells(13, "H") = 3
End If
j = nupare
k = nupagru
For i = 1 To nupagru - 1
  j = j * (nupare - i)
  k = k * (nupagru - i)
Next
Cells(1, "O") = j / k
fila = 1
texto = parejas(combiant(0))
For i = 0 To nupagru - 1
    combiant(i) = i
    If i <> 0 Then texto = texto + "-" + parejas(combiant(i))
Next
Cells(fila, "L") = texto
Do
    colu = nupagru - 1
    Do While combiant(colu) = nupare - nupagru + colu
        colu = colu - 1
        If colu = -1 Then
            fin = True
            Exit Do
        End If
    Loop
    If Not fin Then
        fila = fila + 1
        combiant(colu) = combiant(colu) + 1
        For i = colu + 1 To nupagru - 1
            combiant(i) = combiant(i - 1) + 1
        Next
        texto = parejas(combiant(0))
        For i = 1 To nupagru - 1
            texto = texto + "-" + parejas(combiant(i))
        Next
        Cells(fila, "L") = texto
        If fila Mod 1000 = 0 Then Cells(1, "N") = fila
    End If
Loop Until fin
Cells(1, "N") = fila
MsgBox ("FIN")
End Sub

Y no olvides subirme la nota.

Ah, falla si el número de combinaciones es mayor que 1048000 porque ese es número de filas máximo y no lo he tenido en cuenta, podría dedicarse más de una columna para resultados para solucionarlo si hiciera falta

Gracias Angel, esta perfecto!!

Hola Angel, como te dije esta todo perfecto, lo único que no acepta repetición de número, ejemplo, 4,3,4,8...

Ah, pero es que yo pensaba que tendría que ser así, todos distintos, por eso impuse que si se repetían números no se hiciesa nada a la espera de que se solucionara. Es que la repetición de números plantea ciertos problemas no imposibles de solucionar pero habría que hacer algúnos arreglos, en el ejemplo que pones las ternas que tuvieran 44 saldrían dos veces, una por los dos 4 en el orden natural y otra en el opuesto. ¿Supongo qué no querrás que sea así no? Y ya no te cuento nada si se repiten tres cifras o más

Hola Angel, de todos modos esta genial el macro, ya te subí la nota :-)

Yo no te digo que no se pueda hacer, basta con conforme se van creando las parejas comparar con las que ya hay para no repetir ninguna. Pero es que no entiendo lo que significan esas ternas de parejas, por eso no sé si habría que rechazar las repetidas o no, eso depende del significado que tenga lo que haces.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas