Trier les données par l’aide de VBA anniversaire dans Microsoft Excel
Dans cet article, nous allons créer une macro pour trier les données de la feuille par anniversaire et nous ne prendrons pas en compte l’année lors du tri des données.
Les données brutes se composent de deux colonnes, l’une contient le nom et la deuxième colonne contient la date de naissance.
Explication logique
Nous avons créé une macro, «sorting_names_by_birthday» qui triera les données.
Dans cette macro, on insère d’abord des formules dans la colonne C où l’on trouve la différence entre la date de naissance et la première date de leur année de naissance. Ensuite, nous trions les données par nom pour trier les données par ordre alphabétique de sorte que si deux candidats ont la même date de naissance, leurs noms doivent apparaître par ordre alphabétique. Ensuite, nous trions les données en calculant la différence par ordre croissant pour trier les données par anniversaire.
Après avoir trié les données, pour supprimer les formules de la colonne C, supprimez toute la colonne C.
Pour exécuter la macro, appuyez sur Alt + F8 ou allez dans l’onglet Développeur> cliquez sur Macro.
Veuillez suivre ci-dessous pour le code
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 vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.
Nous aimerions avoir de vos nouvelles, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]