martes, 10 de julio de 2018

Listado de combinaciones sin repetición en Excel

Hoy veremos una forma curiosa de obtener un listado con las combinaciones sin repetición de n elementos tomados de k en k.
Una breve introducción del tema.
Las combinaciones sin repetición de  n elementos tomados de k en k son los diferentes grupos de k elementos que se pueden formar a partir de estos n elementos, de modo que dos grupos se diferencian solamente si tienen elementos distintos, esto es, no nos importa el orden en que aparezcan.
Se representan por Cn,k y su fórmula es:
Cn,k = n! /(n-k)! * k!

Esto en Excel se refleja empleando la función COMBINAT de la que ya hemos hablado aquí


Planteemos el ejemplo a desarrollar.
Queremos listar las combinaciones sin repeticiones de los números 1,2,3 y 4 (4 elementos) tomados de 1 en 1, de 2 en 2, de 3 en 3 y de 4 en 4...




Así pues el posible número de combinaciones serán:
En las celdas I2:I5 insertamos:
=COMBINAT(4;H2)

o también empleando la función de factorial FACT para replicar la fórmula combinatoria.
En las celdas K2:K5
=FACT(4)/(FACT(H2)*FACT(4-H2))

que devuelve
a) de 1 en 1: 4 combinaciones:= 1, 2, 3, 4
b) de 2 en 2: 6 combinaciones:= 12, 13, 14, 23, 24, 34
c) de 3 en 3: 4 combinaciones:= 123, 124, 134, 234
d) de 4 en 4: 1 combinación:= 1234

La suma de esas combinaciones es de 15, valor que coincide con el número 2n-1, siendo n el número de elementos:
24-1 = 15


Esto es interesante ya que para obtener nuestro listado de combinaciones sin repetición nos vamos a apoyar en las características binarias de esos 15 números...
Ya vimos un uso de esta propiedad aquí


La cuestión es que convirtiendo en números binarios los valores de 1 a 15, aplicando la función de Excel DEC.A.BIN tendremos unas combinaciones de 0 y 1 que responden a nuestro propósito...

Listado de combinaciones sin repetición en Excel



Observemos el uso de la función en las celdas B2:B16:
=TEXTO(DEC.A.BIN(A2);"0000")
o sencillamente (más simple)
=DEC.A.BIN(A2;4)

hemos anidado DEC.A.BIN dentro de la función TEXTO para forzar se complete con ceros hasta que aparezcan siempre 4 caracteres o dígitos... o recomendado emplear el segundo argumento de la función DEC.A.BIN para forzar el número de caracteres, con ceros por la izquierda, a usar.


Esta secuencia de 0 y 1 es la que necesitamos para obtener la equivalencia respecto de nuestros 4 elementos a combinar (1,2,3 y 4) de las celdas C1:F1.

Así pues en el rango C2:F16 añadimos la fórmula:
=SI(EXTRAE($B2;COLUMNAS($C$1:C1);1)="1";C$1;"")

Listado de combinaciones sin repetición en Excel



Esta última fórmula simplemente descompone o extrae elemento a elemento de esos números binarios (eso 0 y 1) para finalmente con un sencillo condicional recuperar el elemento correspondiente...

Hemos acabado.. tenemos nuestro listado de 15 combinaciones sin repetición.





2 comentarios:

Nota: solo los miembros de este blog pueden publicar comentarios.