排序方式在Excel中使用VBA生日数据
在本文中,我们将创建一个宏,用于按生日对工作表中的数据进行排序,并且在对数据进行排序时不会考虑年份。
原始数据由两列组成,一列包含名称,第二列包含出生日期。
逻辑解释
我们创建了一个宏“ sorting_names_by_birthday”,它将对数据进行排序。
在此宏中,首先,我们在C列中插入公式,在其中找到出生日期和其出生年份的首个日期之间的差异。然后,我们按名称对数据进行排序,以便按字母顺序对数据进行排序,因此,如果两个候选人的生日相同,则其姓名应按字母顺序出现。然后,我们通过按升序计算差异来对数据进行排序,以按生日对数据进行排序。
排序数据后,要删除列C中的公式,请删除整个列C。要运行宏,请按Alt + F8或转到“开发人员”选项卡>单击“宏”。
请遵循以下代码
如果您喜欢此博客,请在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]