• ベストアンサー

エクセルで誕生月ごとにソートする方法

エクセルで作った数百名の名簿で、ある行に生年月日がシリアル数でいっています。この名簿を誕生月ごとに並べ換えて表示するうまい方法があれば教えてほしいです。 これまで、生年月日を表示しておいて、同じ月生まれの人をコピペ(切り取りと貼り付け)で集めかけていますが、数百名分をこの方法で完成するのはかなり骨が折れそうですので。

質問者が選んだベストアンサー

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8526/18247)
回答No.1

横に=MONTH(日付)で月を計算させて,それを基準に並べ替えればよい。

keros66
質問者

お礼

ありがとうございます。この方法を採用させていただきました。順調に作業を完了することができました。

その他の回答 (4)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

年/月/日で記入してある生年月日列を選び,セルの書式設定の表示形式のユーザー定義で m月 と設定します。 表全体にオートフィルタを取り付け,生年月日列で例えば「5月」などで絞り込みます。 5月生まれの人が一気に抽出できるので,そのまま印刷してもよし,必要に応じてまるっとコピーしてシート2などに貼り付け,集めてしまってもOKです。

keros66
質問者

お礼

ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

回答No3です。月の順で年齢順に並べ替えるのでしたらG2セルに次の式を入力して下方にドラッグコピーします。 =IF(B2="","",MONTH(B2)*100000+B2) その後にG列を優先にして昇順で並べ替えをすればよいでしょう。 月の順で日にち順で年齢順で並べ替えるのでしたらG2セルには次の式を入力して下方にドラッグコピーし、G列を重点に昇順で並べ替えをすればよいでしょう。 =IF(B2="","",MONTH(B2)*10000000+DAY(B2)*100000+B2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

誕生月で抽出して、しかも年齢の高い順にシート2に表示する指せるとしたら次のようにします。 元の表がシート1に有ってA1セルに氏名、B1セルに誕生日、その他の列に別の項目が例えばF列まであるとしたらG列を作業列としてG2セルには次の式を入力します。 =IF(MONTH(B2)=Sheet2!$B$1,B2,"") この式はシート2のB2セルに表示したい誕生月を入力することを前提としています。 そこでシート2ではA1セルには抽出誕生月とでも文字を入力しB1セルにはその月を例えば5月なら5と入力します。 2行目にはシート1と同じ項目名を並べます。 A3セルには次の式を入力してF3セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>COUNT(Sheet1!$G:$G),"",IF(INDEX(Sheet1!$A:$F,MATCH(SMALL(Sheet1!$G:$G,ROW(A1)),Sheet1!$G:$G,0),COLUMN(A1))=0,"",INDEX(Sheet1!$A:$F,MATCH(SMALL(Sheet1!$G:$G,ROW(A1)),Sheet1!$G:$G,0),COLUMN(A1)))) B列のセルの表示形式は日付から設定します。 これでシート2のB1セルの数値を変えることで瞬時に関連のデータがシート2に表示されます。抽出操作などは必要ありません。

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.2

同じ誕生月の人をまとめて、その中での並べ替えはどうしますか? 例えば「1980年5月10日生まれのAさん」と「1985年5月2日生まれのBさん」は同じ5月生まれですが、この2人のどちらを先にしたいですか? もし「生年月日が早い人から順に並べる」(Aさんが先)であればNo.1さんの方法でいいですが 「誕生日が早い人から順に並べる」(Bさんが先)であれば、並べ替え用の作業列を =MONTH(シリアル値)*100+DAY(シリアル値) などのように工夫する必要があります。

keros66
質問者

お礼

ありがとうございます。質問が不十分であった点を補って下さり、気を遣わせてしまったことを恐縮しています。

関連するQ&A

専門家に質問してみよう