解決済みの質問
いつもお世話になっています。エクセル初心者です。
エクセル2003を使用中です。
シート1 に氏名や所属、生年月日等の基本情報があります。
シート2~13に誕生月毎に同様のデータを振り分けしたいのですが、どのようにしたら良いのでしょうか?
(例 4月生シートには4月生の人のデータのみが表示される)
シート1上では生年月日は誕生月と日は別々の列に入力されています。
シート1の基本情報は毎月更新されるので、できれば自動にしたいのです。
説明がわかりにくいかもしれませんが、よろしくお願いします。
投稿日時 - 2010-03-12 11:46:03
自動にしたいということでマクロがいいかと思います。
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
投稿日時 - 2010-03-12 20:56:10
お礼
御礼が遅れてすみません。
ありがとうございます!
「自動」とするとやっぱりマクロですか・・・。
マクロから逃げててはいけませんよね。
頑張ります!
ありがとうございました。
投稿日時 - 2010-03-29 09:08:24
2人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
こんばんは!
参考になるかどうか判りませんが・・・
↓の画像のように勝手に表を作ってみました。
まず、元データの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
投稿日時 - 2010-03-12 22:55:31
お礼
御礼が遅くなってすみません。
ありがとうございます。
式でも何とかなるものなんですね。
投稿日時 - 2010-03-29 09:06:14