In questo articolo, creeremo una macro per ordinare i dati nel foglio per compleanno e non considereremo l’anno durante l’ordinamento dei dati.

I dati grezzi sono costituiti da due colonne, una contiene il nome e la seconda contiene la data di nascita.

RawData

Spiegazione logica

Abbiamo creato una macro, “sorting_names_by_birthday” che ordinerà i dati.

In questa macro inseriamo innanzitutto delle formule nella colonna C dove troviamo la differenza tra la data di nascita e la prima data del loro anno di nascita. Quindi ordiniamo i dati per Nome per ordinare i dati in ordine alfabetico in modo che se due candidati hanno la stessa data di nascita, i loro nomi dovrebbero apparire in ordine alfabetico. Quindi ordiniamo i dati calcolando la differenza in ordine crescente per ordinare i dati per data di nascita.

Dopo aver ordinato i dati, per cancellare le formule dalla colonna C, cancellare l’intera colonna C.

Per eseguire la macro, premere Alt + F8 o Vai alla scheda Sviluppatore> fare clic su Macro.

ArrowAfterRunningMacro

Segui sotto per il codice

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

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]