Ordenar cumpleaños en Excel VBA

Buenas, soy Miguel y hoy os traigo un nuevo artículo.

A continuación veremos un programa en Excel VBA ese clasifica cumpleaños a los primeros meses y al segundo (así que ignoramos los años). Queremos el aniversario con el número de mes más bajo en la primera posición. Si hay cumpleaños con el mismo número de meses, queremos primero el aniversario con el número de día más bajo. Estás listo

Localización:

Ejemplo de arreglo de cumpleaños

Nota: las fechas están en formato estadounidense. Primero los meses, después los días. Este tipo de formato depende de la configuración regional de Windows.

1. Primero, declaramos ocho variables. Una variable de fecha se llama tempDate, una variable de cadena se llama tempName. Las otras seis variables son variables enteras con nombres monthToCheck, dayToCheck, monthNext, dayNext, es decir, j.

Oscuro tempDate Cómo Datos, nameTemp Cómo La cadena
Oscuro mes para comprobar Cómo Entero, dayToCheck Cómo Entero, másSiguiente Cómo Entero, Día siguiente Cómo Entero, me Cómo Entero, j Cómo Entero

2. Comenzamos dos bucles para el siguiente.

Para i = 2 Para 13
Para j = yo + 1 Para 13

Ejemplo: para i = 2, j = 3, 4, ..., 12 y 13 están marcados.

3. Inicializamos cuatro variables enteras. Usamos la función Mes para obtener el mes de una fecha y la función Día para obtener el día de una fecha.

monthToCheck = mes (Celdas (i, 2). Valor)
dayToCheck = day (Cells (i, 2). Value)

monthNext = mes (Celdas (j, 2). Valor)
dayNext = day (Cells (j, 2). Value)

Por ejemplo: al principio, para i = 2; la fecha de Bregje ej = i + 1 = 2 + 1 = 3; Se elegirá la fecha de Niels.

4. Para ordenar las fechas correctamente, comparamos la primera fecha (mes para verificar y día para verificar) con la siguiente fecha (próximo mes y día siguiente). Si la próxima fecha es la "más baja", intercambiamos fechas y nombres. Agregue la siguiente declaración If Then.

(próximo mes (monthNext = monthToCheck mi Día siguiente Entonces

Aleta

Si la afirmación anterior es cierta, intercambiamos fechas y nombres.

Por ejemplo: para i = 2 ej = 3, se comprueba la fecha de Bregje y Niels. MonthNext = 6, monthToCheck = 2. La declaración anterior no es cierta ya que monthNext es mayor que monthToCheck. Excel VBA aumenta j en 1 y repite las líneas de código para i = 2 ej = 4. Puede ver fácilmente que Joost (j = 4) tiene un número de mes más alto que Bregje, así que pasemos al siguiente. Obtenemos el mismo resultado para j = 5 ej = 6. Cuando obtenemos aj = 7, tenemos las siguientes variables: monthNext = 2 y dayNext = 9. MonthToCheck = 2 y dayToCheck = 12. Ahora la declaración anterior es verdadera desde monthNext = monthToCheck y dayNext (9) es menor que dayToCheck (12).

5. Cambiamos las fechas. Almacenamos temporalmente una fecha para tempDate, para que Excel VBA pueda cambiar las fechas correctamente. Agregue las siguientes líneas de código en la instrucción If.

tempDate = Cells (i, 2) .Value
Celdas (i, 2) .Valor = Celdas (j, 2) .Valor
Celdas (j, 2) .Value = tempDate

6. Hacemos lo mismo con los nombres. Agregue las siguientes líneas de código en la instrucción If.

tempName = Celdas (i, 1) .Valor
Celdas (i, 1) .Valor = Celdas (j, 1) .Valor
Celdas (j, 1) .Value = tempName

7. Cerramos el segundo ciclo For Next (Fuera de la instrucción If).

Entonces j

Para i = 2 ej = 7, Excel VBA cambió las fechas y los nombres. Esto significa que tenemos a Richard en la primera posición y Bregje en la posición 7. Eso también significa que obtenemos un nuevo mes para verificar y un día para verificar al comienzo de la siguiente iteración (para i = 2 ej = 8). Ahora compararemos a Richard con Dineke (j = 8). Puede ver fácilmente que no es necesario reemplazar esas fechas y nombres porque Richard tiene una fecha "más baja". De hecho, no es necesario reemplazar a Richard (i = 2) con Jan (j = 9), Wendy (j = 10), Jeroen (j = 11), John (j = 12) y Debby (j = 13) . Eso es porque Richard tiene la cita "más baja". De esta manera Excel VBA obtendrá (para i = 2) la fecha “más baja” en la primera posición. Para obtener la segunda fecha "más baja" en la segunda posición, Excel VBA repite exactamente los mismos pasos para i = 3. Para obtener la tercera fecha "más baja" en la tercera posición, Excel VBA repite exactamente los mismos pasos para i = 4, etc.

8. Cierre el primer bucle For Next.

Entonces me

9. Pruebe su programa.

Resultado:

Ordenar cumpleaños en Excel VBA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página utiliza Cookies. Más info