Сортировать данные по дню рождения с помощью VBA в Microsoft Excel
В этой статье мы создадим макрос для сортировки данных в листе по дням рождения и не будем учитывать год при сортировке данных.
Исходные данные состоят из двух столбцов, один из которых содержит имя, а второй — дату рождения.
Логическое объяснение
Мы создали макрос sorting_names_by_birthday, который сортирует данные.
В этом макросе сначала мы вставляем формулы в столбец C, где мы находим разницу между датой рождения и первой датой года их рождения. Затем мы сортируем данные по имени для сортировки данных в алфавитном порядке, так что если два кандидата имеют одинаковую дату рождения, их имена должны отображаться в алфавитном порядке. Затем мы сортируем данные, вычисляя разницу в порядке возрастания, чтобы отсортировать данные по дню рождения.
После сортировки данных для удаления формул из столбца C удалите столбец C.
Для запуска макроса нажмите Alt + F8 или перейдите на вкладку «Разработчик»> щелкните «Макрос».
Пожалуйста, введите код ниже
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
Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.
Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]