Sortuj dane według urodzin za pomocą VBA w programie Microsoft Excel

Anonim

W tym artykule stworzymy makro do sortowania danych w arkuszu według urodzin i nie będziemy brać pod uwagę roku podczas sortowania danych.

Surowe dane składają się z dwóch kolumn, jedna zawiera nazwisko, a druga data urodzenia.

Wyjaśnienie logiczne

Stworzyliśmy makro „sorting_names_by_birthday”, które będzie sortować dane.

W tym makro najpierw wstawiamy formuły w kolumnie C, gdzie znajdujemy różnicę między datą urodzenia a pierwszą datą ich roku urodzenia. Następnie sortujemy dane według Nazwiska, aby posortować dane w kolejności alfabetycznej, tak aby jeśli dwóch kandydatów ma tę samą datę urodzenia, to ich nazwiska powinny pojawiać się w kolejności alfabetycznej. Następnie sortujemy dane, obliczając różnicę w porządku rosnącym, aby posortować dane według daty urodzenia. Po posortowaniu danych, aby usunąć formuły z kolumny C, usuń całą kolumnę C.

Aby uruchomić makro, naciśnij Alt + F8 lub przejdź do karty Deweloper> kliknij Makro.

Proszę postępować zgodnie z poniższym kodem!

 Option Explicit Sub sorting_names_by_birthday() 'Wyłączanie aktualizacji ekranu Application.ScreenUpdating = False Dim Last_Row As Long 'Znajdowanie ostatniego wiersza Last_Row = ActiveCell.SpecialCells(xlCellTypeLastCell).Row Range("C16").Wybierz 'Pobieranie' dni w roku ' Odejmowanie pierwszej daty roku od daty urodzin ActiveCell.FormulaR1C1 = "=RC[-1]-DATE(YEAR(RC[-1]),1,1)" 'Przeciąganie formuły Range("C16:C" & Last_Row).Select Selection.FillDown 'Sortowanie danych najpierw według kolumny A, a następnie kolumny C Range("A15").CurrentRegion.Sort _ key1:=Range("C15"), order1:=xlAscending, _ key2:=Range ("A15"), order2:=xlAscending, _ Header:=xlYes 'Usuwanie kolumny C Columns("C").Delete Range("A15").Wybierz End Sub 

Jeśli podobał Ci się ten blog, podziel się nim ze znajomymi na Facebooku. Możesz również śledzić nas na Twitterze i Facebooku.

Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy poprawić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail