Anuncios

lunes, 11 de marzo de 2019

😱👉Como GENERAR todas las PERMUTACIONES (combinaciones) con CUALQUIER NÚMERO o LETRAS en Excel

Aprende a generar todas las permutaciones de cualquier número y dígitos que desees, estas permutaciones también se pueden aplicar con letras que desees en excel

Se debe tener presente que las macros nos va permitir realizar las permutaciones con números y con letras.


¿COMO GENERAR PERMUTACIONES EN EXCEL CON MACROS?


Con estas dos macro nos va permitir realizar lo siguiente: 

- Realizar todas las permutaciones posibles con números
Realizar todas las permutaciones posibles con letras

Revisa los dos videos para que aprendas a utilizar las dos macros y en la parte inferior del articulo se encuentra el enlace para que la puedas descargar

Video parte #1 - permutaciones con números




Video parte #2 - permutaciones con letras

 

Importante que para utilizar la macro debemos de tener habilitados el menú de programador o desarrollador dependiendo de la versión de excel que tengas. En este corto video te explico como lo puedes habilitar

Es muy importante tener en esquema por orden de la información donde está un consecutivo del total de las combinaciones y la otra columna donde van a parecer las combinaciones.

Como se muestra en la imagen, en la columna A colocamos los números que vamos  a realizar la permutación que sería 4 números luego en la celda D y F estaran las permutaciones para el ejemplo sera de un tamaño de 3 permutaciones y en la celda I1 la cantidad del total de permutaciones que para el ejemplo daría 64 permutaciones. Se debe tener presente que para calcular la cantidad de permutaciones se debe tomar la cantidad de números y elevarlo al tamaño de cada permutación, es decir que para el ejemplo son 4 números y tamaño 3 entonces la formula quedaría 4^3 = 64


Después de que tengamos habilitado las macros debemos de insertar un botón.



y arrastramos con el mouse el tamaño como queremos el botón.




Luego nos ubicamos botón y presionamos clic derecho asignar macro y ahí le podemos asignar un nombre a la macro y le decimos nuevo





Luego copiamos la macro que se encuentra al final de esta pagina.

En el momento de ejecutar la macro te sale un primer cuadro donde debemos de escribir el número de dígitos que tendrá cada permutación, para el ejemplo va ser 3 y presionamos aceptar.


Luego nos arroja la siguiente mensaje digita el número de la fila donde esta el primer caracter o número y sería la fila 2 y presionamos aceptar


Luego nos arroja la siguiente mensaje digita el número de la fila donde esta el ultimo caracter o número y sería la fila 5 y presionamos aceptar




Luego nos arroja la siguiente mensaje digita el número de la fila donde comenzara la primera combinación menos 1 ejemplo: la fila 2 comienza la primera permutación y se le resta el #1, el valor que digito es el 1 y para el ejemplo la permutación comienza en el 2 y le restamos uno sería 1 y aceptar


Luego nos aparece la siguiente ventana digita el número de la columna donde comenzara la primera permutación, ejemplo si la columna C se escribe el número 3, para el ejemplo sería la columna D entonces escribimos el número 4 y presionamos aceptar.




En el siguiente mensaje nos aparece digite el número que desea cada lote de permutaciones, si no quiere por lotes escribe el número 0, esta opción se utiliza cuando hay muchas permutaciones por ejemplo 1 millon de permutaciones entonces se escribe de cuantas permutaciones inicia el siguiente lote. para el ejemplo escribimos 0



Y la macro nos empieza a realizar todas las permutaciones posibles en nuestra hoja de excel.



La macro consiste en lo siguiente.

Se nombra las variables de inicio, limite, fila, digitos, columna, lote como integer y como double

Dim inicio As Integer
Dim limite As Integer
Dim fila As Double
Dim digitos As Integer
Dim columna As Integer
Dim lote As Integer

Le asignamos para cada variable la caja de texto para que ingresen los valores.

digitos = InputBox("Digita la cantidad de digitos que tendra cada preposición", "CANTIDAD DE DIGITOS")

inicio = InputBox("Digita el número de la fila donde esta el primer caracter o número", "FILA LIMITE")

limite = InputBox("Digita el número de la fila donde esta el ultimo caracter o número", "FILA LIMITE")

fila = InputBox("Digita el número de la fila donde comenzara la primera combinación menos 1, Ejemplo: La fila 2 comienza la primera combinación y se le resta el # 1, el valor que digito es el 1", "FILA INICIAL")

columna = InputBox("Digita el número de la Columna donde comenzara la primera combinación, Ejemplo si la columna es C se escribe el número 3", "COLUMNA INICIAL")

lote = InputBox("Digita el número que desee cada lote de combinaciones, si no quieres por lotes escribe el número 0", "LIMITE DE CADA LOTE")

Se raliza un ciclo con for para dos digitos

'PARA DOS DIGITOS

If digitos = 2 Then
For dato1 = inicio To limite
For dato2 = inicio To limite
Cells(fila + 1, columna) = Cells(dato1, 1)
Cells(fila + 1, columna + 1) = Cells(dato2, 1)
fila = fila + 1

Algoritmo para cada lote, se utiliza para preposiciones superiores a 60.000 o al gusto

If fila = lote Then 'Limite del lote de cada preposición
columna = columna + 3
fila = 1
End If

Next dato2
Next dato1
End If

Se realiza un ciclo con for para tres digitos

'PARA TRES DIGITOS


If digitos = 3 Then
For dato1 = inicio To limite
For dato2 = inicio To limite
For dato3 = inicio To limite

Cells(fila + 1, columna) = Cells(dato1, 1)
Cells(fila + 1, columna + 1) = Cells(dato2, 1)
Cells(fila + 1, columna + 2) = Cells(dato3, 1)
fila = fila + 1
If fila = lote Then 'Limite del lote de cada preposición
columna = columna + 4
fila = 1
End If

Next dato3
Next dato2
Next dato1
End If

Se realiza un ciclo con for para cuatro dígitos

'PARA CUATRO DIGITOS

If digitos = 4 Then
For dato1 = inicio To limite
For dato2 = inicio To limite
For dato3 = inicio To limite
For dato4 = inicio To limite
Cells(fila + 1, columna) = Cells(dato1, 1)
Cells(fila + 1, columna + 1) = Cells(dato2, 1)
Cells(fila + 1, columna + 2) = Cells(dato3, 1)
Cells(fila + 1, columna + 3) = Cells(dato4, 1)
fila = fila + 1
If fila = lote Then 'Limite del lote de cada preposición
columna = columna + 5
fila = 1
End If

Next dato4
Next dato3
Next dato2
Next dato1
End If

Se realiza un ciclo con for para cinco dígitos
'PARA CINCO DIGITOS

If digitos = 5 Then
For dato1 = inicio To limite
For dato2 = inicio To limite
For dato3 = inicio To limite
For dato4 = inicio To limite
For dato5 = inicio To limite

Cells(fila + 1, columna) = Cells(dato1, 1)
Cells(fila + 1, columna + 1) = Cells(dato2, 1)
Cells(fila + 1, columna + 2) = Cells(dato3, 1)
Cells(fila + 1, columna + 3) = Cells(dato4, 1)
Cells(fila + 1, columna + 4) = Cells(dato5, 1)

fila = fila + 1
If fila = lote Then 'Limite del lote de cada preposición
columna = columna + 6
fila = 1
End If

Next dato5
Next dato4
Next dato3
Next dato2
Next dato1
End If

Se realiza un ciclo con for para seis digitos

'PARA SEIS digitos

If digitos = 6 Then
For dato1 = inicio To limite
For dato2 = inicio To limite
For dato3 = inicio To limite
For dato4 = inicio To limite
For dato5 = inicio To limite
For dato6 = inicio To limite
Cells(fila + 1, columna) = Cells(dato1, 1)
Cells(fila + 1, columna + 1) = Cells(dato2, 1)
Cells(fila + 1, columna + 2) = Cells(dato3, 1)
Cells(fila + 1, columna + 3) = Cells(dato4, 1)
Cells(fila + 1, columna + 4) = Cells(dato5, 1)
Cells(fila + 1, columna + 5) = Cells(dato6, 1)

fila = fila + 1
If fila = lote Then 'Limite del lote de cada preposición
columna = columna + 7
fila = 1
End If

Next dato6
Next dato5
Next dato4
Next dato3
Next dato2
Next dato1

End If

Se realiza un ciclo con for para siete digitos

'PARA SIETE DIGITOS

If digitos = 7 Then
For dato1 = inicio To limite
For dato2 = inicio To limite
For dato3 = inicio To limite
For dato4 = inicio To limite
For dato5 = inicio To limite
For dato6 = inicio To limite
For dato7 = inicio To limite

Cells(fila + 1, columna) = Cells(dato1, 1)
Cells(fila + 1, columna + 1) = Cells(dato2, 1)
Cells(fila + 1, columna + 2) = Cells(dato3, 1)
Cells(fila + 1, columna + 3) = Cells(dato4, 1)
Cells(fila + 1, columna + 4) = Cells(dato5, 1)
Cells(fila + 1, columna + 5) = Cells(dato6, 1)
Cells(fila + 1, columna + 6) = Cells(dato7, 1)

fila = fila + 1
If fila = lote Then 'Limite del lote de cada preposición
columna = columna + 8
fila = 1
End If

Next dato7
Next dato6
Next dato5
Next dato4
Next dato3
Next dato2
Next dato1
End If


Se realiza un ciclo con for para ocho digitos

'PARA OCHO DIGITOS

If digitos = 8 Then
For dato1 = inicio To limite
For dato2 = inicio To limite
For dato3 = inicio To limite
For dato4 = inicio To limite
For dato5 = inicio To limite
For dato6 = inicio To limite
For dato7 = inicio To limite
For dato8 = inicio To limite

Cells(fila + 1, columna) = Cells(dato1, 1)
Cells(fila + 1, columna + 1) = Cells(dato2, 1)
Cells(fila + 1, columna + 2) = Cells(dato3, 1)
Cells(fila + 1, columna + 3) = Cells(dato4, 1)
Cells(fila + 1, columna + 4) = Cells(dato5, 1)
Cells(fila + 1, columna + 5) = Cells(dato6, 1)
Cells(fila + 1, columna + 6) = Cells(dato7, 1)
Cells(fila + 1, columna + 7) = Cells(dato8, 1)

fila = fila + 1
If fila = lote Then 'Limite del lote de cada preposición
columna = columna + 9
fila = 1
End If

Next dato8
Next dato7
Next dato6
Next dato5
Next dato4
Next dato3
Next dato2
Next dato1
End If


Se realiza un ciclo con for para nueve dígitos

'PARA NUEVE DIGITOS

If digitos = 9 Then
For dato1 = inicio To limite
For dato2 = inicio To limite
For dato3 = inicio To limite
For dato4 = inicio To limite
For dato5 = inicio To limite
For dato6 = inicio To limite
For dato7 = inicio To limite
For dato8 = inicio To limite
For dato9 = inicio To limite

Cells(fila + 1, columna) = Cells(dato1, 1)
Cells(fila + 1, columna + 1) = Cells(dato2, 1)
Cells(fila + 1, columna + 2) = Cells(dato3, 1)
Cells(fila + 1, columna + 3) = Cells(dato4, 1)
Cells(fila + 1, columna + 4) = Cells(dato5, 1)
Cells(fila + 1, columna + 5) = Cells(dato6, 1)
Cells(fila + 1, columna + 6) = Cells(dato7, 1)
Cells(fila + 1, columna + 7) = Cells(dato8, 1)
Cells(fila + 1, columna + 8) = Cells(dato9, 1)

fila = fila + 1
If fila = lote Then 'Limite del lote de cada preposición
columna = columna + 10
fila = 1
End If

Next dato9
Next dato8
Next dato7
Next dato6
Next dato5
Next dato4
Next dato3
Next dato2
Next dato1

En el siguiente ENLACE puedes DESCARGAR la macro para combinaciones con repetición.



Seguramente quieres sabes más acerca de Excel, no te olvides darte una vuelta por las siguientes secciones disponibles para ti de manera gratuita: 

Canal de
 YouTube
Comunicad Telegram

Hasta una próxima y te deseo el mayor de los EXITOS.

Aprende y Enseña Excel.

1 comentario:

  1. Hola amigo excell-ente tu apoyo y tu ayuda en pro- de enseñar y aprender. Me puedes enviar una copia de las Macros a mi correo jreina7@gmail.com, gracias.

    ResponderEliminar