В этой статье мы создадим макрос для сортировки данных в листе по дням рождения и не будем учитывать год при сортировке данных.

Исходные данные состоят из двух столбцов, один из которых содержит имя, а второй — дату рождения.

RawData

Логическое объяснение

Мы создали макрос sorting_names_by_birthday, который сортирует данные.

В этом макросе сначала мы вставляем формулы в столбец C, где мы находим разницу между датой рождения и первой датой года их рождения. Затем мы сортируем данные по имени для сортировки данных в алфавитном порядке, так что если два кандидата имеют одинаковую дату рождения, их имена должны отображаться в алфавитном порядке. Затем мы сортируем данные, вычисляя разницу в порядке возрастания, чтобы отсортировать данные по дню рождения.

После сортировки данных для удаления формул из столбца C удалите столбец C.

Для запуска макроса нажмите Alt + F8 или перейдите на вкладку «Разработчик»> щелкните «Макрос».

ArrowAfterRunningMacro

Пожалуйста, введите код ниже

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]