Microsoft ExcelでVBAを使用して誕生日で並べ替えデータ
この記事では、誕生日ごとにシート内のデータを並べ替えるためのマクロを作成します。データを並べ替える際に年は考慮しません。
生データは2つの列で構成され、1つには名前が含まれ、2つ目の列には生年月日が含まれます。
ロジックの説明
データを並べ替えるマクロ「sorting_names_by_birthday」を作成しました。
このマクロでは、最初に列Cに数式を挿入します。ここで、生年月日と生年月日の最初の日付の違いを見つけます。次に、データを名前で並べ替えて、データをアルファベット順に並べ替えます。これにより、2人の候補者の生年月日が同じ場合、名前がアルファベット順に表示されます。次に、昇順の差を計算してデータを並べ替え、誕生日でデータを並べ替えます。
データを並べ替えた後、列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]までご連絡ください