De acuerdo con la definición matemática una combinación
es un arreglo donde el orden no tiene importancia, podrías por ejemplo saber
todas las combinaciones del baloto, lo cual no implica que lo llegaras a ganar.
Siguiendo con los conceptos matemáticos la notación para las combinaciones es
C(n,r) cuantas veces se pueden combinar n elementos r a la vez.
Pensando en el título de hoy escribí una macro que
encuentra todas las combinaciones posibles
entre tres columnas con diferentes valores. Así funciona la macro:
1. En
la hoja de cálculo tenemos una tabla con la información que combinaremos
1 2. Hemos
agregado dos figuras que funcionan como botones
Cuando el usuario haga click en el botón combinar, se
ejecutara la macro que describo a continuación:
a. Definimos
cuatro variables
Ws de tipo Excel.worksheet representa la hoja de cálculo
principal, wsformat también de tipo
Excel.worksheet representa la hoja de cálculo con los formatos que daremos a
cada celda, combinación de tipo string
nos servirá para ir almacenando de forma temporal cada posible combinación ,
cuenta de tipo entero nos servirá para contar el número de combinaciones
posibles.
a b. Creamos
la rutina principal
A partir de esta rutina invocaremos otras que realizaran
la combinación entre columnas, definimos tres variables de tipo entero: lastrow
, f y rowreplace. Asignamos a la
variable WS definida en el punto anterior la hoja de cálculo principal y a la variable
wsformat la hoja de cálculo con los formatos. Invocamos la rutina columnaA que
combina la columna A de la hoja de cálculo con las columnas B y C, se aumenta
en uno el contador de filas e invocamos
la rutina columnaC que combina la columna C con las columnas A y B , nuevamente se aumenta el contador de filas en
uno y se invoca la rutina columnaB que combina la columna B con las columnas A
y C.
1 3. Explicare
el funcionamiento de la rutina columnaA , las rutinas columnaC y columnaB
obedecen al mismo algoritmo, con diferencias muy leves.
La rutina recibe los siguientes parámetros: lastrow de
tipo entero donde almacenaremos el número de la última fila con datos en la
columna a, rowreplace de tipo entero será un contador de la celda de las
columnas B y C (según corresponda) que estamos combinando con la columna A, ws
de tipo Excel.worksheet que representa la hoja de cálculo principal y wsformat que representa la hoja de cálculo de
formatos.
Definimos la variable f que identifica la fila en la que
estamos ubicados, la inicializamos en 6 porque desde esta fila empezaremos a
recorrer la hoja de cálculo principal. Buscamos cual es la última fila con
datos en la hoja de cálculo y guardamos este resultado en la variable lastrow.
Iniciamos un ciclo desde 6 hasta el valor que contenga la
variable lastrow y dentro de este ciclo combinamos todas las filas de la
columna A, almacenando el resultado en la variable combinación.
Terminado este ciclo copiamos los formatos de la hoja
wsformat y los pegamos en la hoja principal, después asignamos el valor de la
variable combinación.
Iniciamos otro ciclo desde el valor que contiene la
variable rowreplace hasta la última fila con datos – 1, en este ciclo
invocaremos una rutina que combina las columnas A y B. Como resultado
obtendremos las combinaciones posibles de la columna A y B.
Hacemos lo mismo para las columnas A y C.
La siguiente rutina combina las columnas A y B.
Recibe como parámetros las variables de tipo entero
lastrow , rowreplace y f.
Desde 6 hasta la última fila con datos recorre la columna
A combinándola con el valor de la columna B en la fila rowreplace.
Si hacemos click en el botón combinar obtendremos como
resultado, todas las combinaciones posibles
Cuando se hace click en el botón limpiar se ejecuta una
rutina que borra la información de las combinaciones en la hoja de cálculo.
Si quieres recibir la hoja de cálculo con la macro, escríbeme
a macrosymacros1@gmail.com o puedes descargarla siguiendo este enlace.
1
No hay comentarios:
Publicar un comentario