Sorteerige andmed sünnipäeva järgi, kasutades Microsoft Excelis VBA -d

Anonim

Selles artiklis loome makro, et sortida lehel olevad andmed sünnipäeva järgi, ja me ei arvesta andmete sortimisel aastat.

Toorandmed koosnevad kahest veerust, üks sisaldab nime ja teine ​​veerg sisaldab sünnikuupäeva.

Loogiline seletus

Oleme loonud makro “sorting_names_by_birthday”, mis sorteerib andmed.

Sellesse makrosse sisestame esmalt veergu C valemid, kus leiame erinevuse sünnikuupäeva ja nende sünniaasta esimese kuupäeva vahel. Seejärel sorteerime andmed nime järgi, et sortida andmeid tähestikulises järjekorras, nii et kui kahel kandidaadil on sama sünnikuupäev, peaksid nende nimed ilmuma tähestikulises järjekorras. Seejärel sorteerime andmed, arvutades erinevused kasvavas järjekorras, et sortida andmed sünnipäeva järgi. Pärast andmete sortimist kustutage veerust C valemite kustutamiseks kogu veerg C.

Makro käitamiseks vajutage klahvikombinatsiooni Alt +F8 või minge vahekaardile Arendaja> klõpsake nuppu Makro.

Palun järgige koodi allpool

 Option Explicit Sub sorting_names_by_birthday () 'Ekraanivärskenduse keelamine Application.ScreenUpdating = False Dim Last_Row As Long' Viimase rea leidmine Last_Row = ActiveCell.SpecialCells (xlCellTypeLastCell) .Rida vahemik ("C16"). Valige 'Aasta päevade hankimine' Aasta esimese kuupäeva lahutamine sünnipäevast ActiveCell.FormulaR1C1 = "= RC [-1] -DATE (AASTA (RC [-1]), 1,1)" 'Valemivahemiku lohistamine ("C16: C" & Last_Row). Valige Selection.FillDown 'Andmete sortimine esmalt veeru A, seejärel veeru C vahemiku järgi ("A15"). CurrentRegion.Sort _ key1: = Vahemik ("C15"), järjekord1: = xlTõusev, _ võti2: = Vahemik ("A15"), järjekord2: = xlTõusev, _ Päis: = xlJah 'Veeru C veergude kustutamine ("C"). Kustuta vahemik ("A15"). Valige Lõpeta alam 

Kui teile see blogi meeldis, jagage seda oma sõpradega Facebookis. Lisaks saate meid jälgida Twitteris ja Facebookis.

Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd paremaks muuta ja teie jaoks paremaks muuta. Kirjuta meile meilisaidile