En este artículo, crearemos una macro para ordenar los datos en la hoja por fecha de nacimiento y no consideraremos el año al ordenar los datos.

Los datos brutos constan de dos columnas, una contiene el nombre y la segunda columna contiene la fecha de nacimiento.

RawData

Explicación lógica

Hemos creado una macro, «sorting_names_by_birthday» que ordenará los datos.

En esta macro, en primer lugar insertamos fórmulas en la columna C donde encontramos la diferencia entre la fecha de nacimiento y la primera fecha de su año de nacimiento. Luego, clasificamos los datos por Nombre para clasificar los datos en orden alfabético, de modo que si dos candidatos tienen la misma fecha de nacimiento, sus nombres deberían aparecer en orden alfabético. Luego, ordenamos los datos calculando la diferencia en orden ascendente para ordenar los datos por fecha de nacimiento.

Después de ordenar los datos, para eliminar las fórmulas de la columna C, elimine toda la columna C.

Para ejecutar la macro, presione Alt + F8 o vaya a la pestaña Desarrollador> haga clic en Macro.

ArrowAfterRunningMacro

Siga a continuación el código

Option Explicit

Sub sorting_names_by_birthday()

'Disabling screen update

Application.ScreenUpdating = False

Dim Last_Row As Long

'Finding the last row

Last_Row = ActiveCell.SpecialCells(xlCellTypeLastCell).Row

Range("C16").Select

'Getting the days of the year

'Subtracting first date of the year from date of birthday

ActiveCell.FormulaR1C1 = "=RC[-1]-DATE(YEAR(RC[-1]),1,1)"

'Dragging the formula

Range("C16:C" & Last_Row).Select

Selection.FillDown

'Sorting the data first by column A then by column C

Range("A15").CurrentRegion.Sort _

key1:=Range("C15"), order1:=xlAscending, _

key2:=Range("A15"), order2:=xlAscending, _

Header:=xlYes



'Deleting the column C

Columns("C").Delete

Range("A15").Select

End Sub

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]