이 기사에서는 시트의 데이터를 생일별로 정렬하는 매크로를 만들고 데이터를 정렬하는 동안 연도를 고려하지 않습니다.

원시 데이터는 두 개의 열로 구성되며 하나에는 이름이 포함되고 두 번째 열에는 생년월일이 포함됩니다.

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]로 문의 해주세요