在本文中,我们将创建一个宏,用于按生日对工作表中的数据进行排序,并且在对数据进行排序时不会考虑年份。

原始数据由两列组成,一列包含名称,第二列包含出生日期。

RawData

逻辑解释

我们创建了一个宏“ sorting_names_by_birthday”,它将对数据进行排序。

在此宏中,首先,我们在C列中插入公式,在其中找到出生日期和其出生年份的首个日期之间的差异。然后,我们按名称对数据进行排序,以便按字母顺序对数据进行排序,因此,如果两个候选人的生日相同,则其姓名应按字母顺序出现。然后,我们通过按升序计算差异来对数据进行排序,以按生日对数据进行排序。

排序数据后,要删除列C中的公式,请删除整个列C。要运行宏,请按Alt + F8或转到“开发人员”选项卡>单击“宏”。

ArrowAfterRunningMacro

请遵循以下代码

如果您喜欢此博客,请在Facebook和Facebook上与您的朋友分享。

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

我们很希望收到您的来信,请让我们知道我们如何才能改善我们的工作并使您的工作更好。写信给我们[email protected]