300 Ejemplos

Ordenar cumpleaños

Sort Birthdays

A continuación, veremos un programa en Excel VBA ese ordena cumpleaños al mes primero y al segundo día (por lo que ignoramos los años). Queremos el cumpleaños con el número de mes más bajo en la primera posición. Si hay cumpleaños con números de mes iguales, queremos primero el cumpleaños con el número de día más bajo. ¿Estás listo?





Situación:

Ejemplo de clasificación de cumpleaños





Nota: las fechas están en formato de EE. UU. Meses primero, días segundo. Este tipo de formato depende de la configuración regional de Windows.

1. Primero, declaramos ocho variables. Una variable de fecha que llamamos tempDate, una variable de cadena que llamamos tempName. Las otras seis variables son variables enteras con nombres monthToCheck, dayToCheck, monthNext, dayNext, i y j.



NingunotempDateComo Fecha, tempNameComo Cuerda
NingunomonthToCheckComo Entero, dayToCheckComo Entero, mesSiguienteComo Entero, díaSiguienteComo Entero, IComo Entero, jComo Entero

2. Comenzamos dos bucles For Next.

cómo agregar una serie en Excel
Parai = 2Para13
Paraj = yo + 1Para13

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) .Value)
dayToCheck = día (Cells (i, 2) .Value)

monthNext = mes (Celdas (j, 2) .Value)
dayNext = día (Celdas (j, 2) .Valor)

Por ejemplo: al inicio, para i = 2 la fecha de Bregje, y j = i + 1 = 2 + 1 = 3 se elegirá la fecha de Niels.

4. Para ordenar las fechas correctamente, comparamos la primera fecha (monthToCheck y dayToCheck) con la siguiente fecha (monthNext y dayNext). Si la próxima fecha es 'más baja', intercambiamos las fechas y los nombres. Agregue la siguiente declaración If Then.

Si(mes siguienteO(monthNext = monthToCheckYdíaSiguienteLuego

Fin Si

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

cómo usar if y vlookup en Excel juntos

Por ejemplo: para i = 2 yj = 3, se verifica 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 incrementa j en 1 y repite las líneas de código para i = 2 y j = 4. Puede ver fácilmente que Joost (j = 4) tiene un número de mes más alto que Bregje, así que pasamos al siguiente. Obtenemos el mismo resultado para j = 5 y j = 6. Cuando llegamos a j = 7, tenemos las siguientes variables: monthNext = 2 y dayNext = 9. MonthToCheck = 2 y dayToCheck = 12. Ahora la declaración anterior es verdadera ya que monthNext = monthToCheck y dayNext (9) es menor que dayToCheck (12).

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

'intercambiar fechas
tempDate = Celdas (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.

'intercambiar nombres
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).

próximoj

Para i = 2 y j = 7, Excel VBA intercambió las fechas y los nombres. Eso 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 monthToCheck y dayToCheck al comienzo de nuestra próxima iteración (para i = 2 y j = 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 fecha '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 ciclo For Next (fuera de la instrucción If).

cómo filtrar por fecha en Excel
próximoI

9. Pruebe su programa.

Resultado:

Ordenar cumpleaños en Excel VBA

8/8 Completado! Obtenga más información sobre fechas y horarios>
Ir al capítulo siguiente: Eventos



^