• ベストアンサー

エクセルでシートを反映させたい

いつもお世話になっています。エクセル初心者です。 エクセル2003を使用中です。 シート1 に氏名や所属、生年月日等の基本情報があります。 シート2~13に誕生月毎に同様のデータを振り分けしたいのですが、どのようにしたら良いのでしょうか? (例 4月生シートには4月生の人のデータのみが表示される) シート1上では生年月日は誕生月と日は別々の列に入力されています。 シート1の基本情報は毎月更新されるので、できれば自動にしたいのです。 説明がわかりにくいかもしれませんが、よろしくお願いします。

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

  • ベストアンサー
  • jiji0721
  • ベストアンサー率50% (8/16)
回答No.1

自動にしたいということでマクロがいいかと思います。 Sheet1と1月生~12月生というシートがあり、 Sheet1に 氏名  所属  誕生月  日 と並んでいたとします。 Sheet1のどこでもいいので好きなところに オートシェイプで図形を作り、 図形を右クリック→マクロの登録→新規作成をクリック Sub 正方形長方形1_Click() End Sub みたいな感じで表示されるので、Sub ~ End Subの間に 下記のコードを貼り付けてみてください。 Application.ScreenUpdating = False For i = 1 To 12 Range("A1").AutoFilter Field:=3, Criteria1:=i Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _ Worksheets(i & "月生").Range("A1") Worksheets(i & "月生").Select Range("A1").Select Worksheets("Sheet1").Select Selection.AutoFilter Next Application.ScreenUpdating = True

mercury110
質問者

お礼

御礼が遅れてすみません。 ありがとうございます! 「自動」とするとやっぱりマクロですか・・・。 マクロから逃げててはいけませんよね。 頑張ります! ありがとうございました。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 参考になるかどうか判りませんが・・・ ↓の画像のように勝手に表を作ってみました。 まず、元データのSheet1に作業用の列(表)を作っています。 作業列G2セルに =IF($C2=G$1,ROW(A1),"") という数式を入れ、列方向と行方向にオートフィルでコピーします。 そして、Sheet2~Sheet13は全て同じ配列だとして、 Sheet2を開いたまま、Shiftキーを押しながら、画面の下側にあるSheet見出しのSheet13をクリックします。 これでSheet2~Sheet13が作業グループ化されましたので、Sheet2だけに数式を入れればSheet13まで同じ数式が入力されます。 Sheet2のA3セルに =IF(COUNT(OFFSET(Sheet1!$F$2:$F100,,MATCH($A$1,Sheet1!$G$1:$R$1,0),,1))<ROW(A1),"",INDEX(Sheet1!A$2:A100,SMALL(OFFSET(Sheet1!$F$2:$F$100,,MATCH($A$1,Sheet1!$G$1:$R$1,0),,1),ROW(A1)))) という数式を入れ、列方向と行方向にオートフィルでコピーします。 (数式はSheet1の100行目まで対応できるようにしています) 最後にSheet見出し上で右クリック → 作業グループ解除 以上で完了です。 これで各SheetのA1セルに月の数値を入力すれば生まれ月に振り分けられると思います。 以上、長々と書きましたが 参考になれば幸いです。m(__)m

mercury110
質問者

お礼

御礼が遅くなってすみません。 ありがとうございます。 式でも何とかなるものなんですね。