Combinaciones posibles con cinco números

Deseo saber como hacer en excel las combinaciones posibles de cinco números, que no se repitan y agrupados de dos en dos, generando un listado con todas las combinaciones posibles.

Según tengo entendido se puede hacer con o sin macro.

2 respuestas

Respuesta
2

Una combinación de 5 números de tamaño 2 genera 10 resultados únicos e irrepetibles, de hecho por eso se llama combinación, si tuviera máximo 4 repetidos seria una permutacion o si todos los números se repetieran seria un arreglo natural, para generar combinaciones (5,2) esta es la macro.

Option Base 1
Sub GENERA_COMBINACIONES()
Dim FUNCION As WorksheetFunction
Set FUNCION = WorksheetFunction
NUMEROS = 5
TAMANO = 2
COMBINACIONES = FUNCION.Combin(NUMEROS, TAMANO)
Set DATOS = Range("A1").Resize(COMBINACIONES, 2)
ReDim MATRIZ(COMBINACIONES, TAMANO)
x = 1
For I = 1 To NUMEROS
    For J = 1 To NUMEROS
        NUM = I:        NUM2 = J
        If NUM2 > NUM Then
            MATRIZ(x, 1) = NUM
            MATRIZ(x, 2) = NUM2
            x = x + 1
        End If
    Next J
Next I
With DATOS
    Range(.Address) = MATRIZ
    .EntireColumn.AutoFit
End With
End Sub

No sale el resultado que deseo, no se si es por no explicar bien lo que quiero o por no saber llevarlo a cabo, en concreto es: en la columna A, pongo una lista de cinco números de cuatro cifras cada uno. En la columna B,  quiero que aparezca el resultado con todas las combinaciones posibles de dos números que no se repitan.

Gracias y un saludo.

Ejemplo:     Columna A                 Columna B

                       1111                          1111 - 2222

                       2222                          1111 - 3333

                       3333                           ...

                       4444

                       5555

Este es el resultado de la macro, y si te falto un ejemplo dentro de la explicación inicial

Y esta es la macro

Option Base 1
Sub generar_combinaciones()
Set datos = Range("a1").CurrentRegion
With datos
    r = .Rows.Count
    comb = WorksheetFunction.Combin(r, 2)
    ReDim matriz(comb, 1)
    x = 1
    For i = 1 To r
        For j = 1 To r
            numero = .Cells(i)
            numero2 = .Cells(j)
            If numero2 > numero Then
                matriz(x, 1) = numero & "-" & numero2
                x = x + 1
            End If
        Next j
    Next i
    Range(.Columns(2).Resize(comb, 1).Address) = matriz
End With
Set datos = Nothing
End Sub
Respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas