プロが教えるわが家の防犯対策術!

「Excel」のオートフィルタを使って、
自動的にリストを上から順番に抽出していって、
印刷したいのですが…。

具体的には、「部署名」が入っているA列
(B列以降に「名前」等)を、
オートフィルタを使って部署ごとに
グルーピングした後、印刷をします。

これを部署の数だけ順番に繰り返していくのですが、
部署名がとても多いので、
それを自動化したいのですが…。

マクロはよく分からないので、
「マクロの記録」ボタンを使ってしか
出来ないのですが、それだと、一度
全部の署名を「グルーピング→印刷」
して、記録させなければいけませんよね?

部署名の変更・追加等にも対応出来る
良い方法はないでしょうか?

宜しくお願い致します。

A 回答 (3件)

私流のやり方


Sub test01()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
'---------部署名A列でソート-
ws1.Range("A2:C12").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin
'----------最終行を察知
d = ws1.Range("A65536").End(xlUp).Row
'-----初期設定
m = ws1.Cells(2, "A")
j = 2 'Sheet2の開始行
ws2.Cells(1, "A") = "部署"
ws2.Cells(1, "B") = "氏名"
ws2.Cells(1, "C") = "住所"
'-----2からd行まで繰り返し
For i = 2 To d
If ws1.Cells(i, "A") <> m Then '前の行と部署変ったか
ws2.Range(ws2.Cells(2, "A"), ws2.Cells(j, "C")).PrintOut '印刷
ws2.Range(ws2.Cells(2, "A"), ws2.Cells(j, "C")).ClearContents 'クリア
j = 2
m = ws1.Cells(i, "A")
Else
End If
'----Sheet2のj行にSheet1のi行をコピー
ws2.Cells(j, "A") = ws1.Cells(i, "A")
ws2.Cells(j, "B") = ws1.Cells(i, "B")
ws2.Cells(j, "C") = ws1.Cells(i, "C")
j = j + 1
Next i
'----後仕舞い
ws2.Range(ws2.Cells(2, "A"), ws2.Cells(j, "C")).PrintOut
End Sub
----------
(例データ)
部署氏名住所
営業部小山東京
営業部中畑埼玉
人事部小川静岡
営業部中山愛知
開発部大島静岡
開発部大木神奈川
総務部小島三重
人事部東山埼玉
人事部小畑栃木
総務部山田東京
営業部大畑茨城
(結果)
第1ページ
部署氏名住所
営業部小山東京
営業部中畑埼玉
営業部中山愛知
営業部大畑茨城
第2ページ
部署氏名住所
開発部大島静岡
開発部大木神奈川
第3ページ
部署氏名住所
人事部小川静岡
人事部東山埼玉
人事部小畑栃木
第4ページ
部署氏名住所
総務部小島三重
総務部山田東京
    • good
    • 1
この回答へのお礼

マクロまで書いて頂き、
ありがとうございました!

これなら少しアレンジするだけだったので、
私でも出来ました!

まさに、思っていた通りの事が出来て
嬉しいです。

回答、有難うございました。

お礼日時:2004/08/19 01:31

フィルタをかける列が何個くらいあるのか、


また、全体で何列くらいあるのかにもよるのですが、
ピボットテーブルはいかがでしょう。
グループ分け、改ページ、合計、個数等も簡単です。
多少工夫は必要ですけどね。
    • good
    • 0
この回答へのお礼

私のスキルでは、
ピボットテーブルで
思い通りの事をするのは難しいようです。
「集計」するぐらいしか出来ないもので…
すみません。

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

お礼日時:2004/08/19 01:35

自動化までは行きませんが、ユーザ設定のビューと言うのがあります。


フィルターの条件を記憶させておいて次々実行していく方法です。
手順は、
(1)印刷させたい条件でフィルターをかけ、印刷設定します。
(2)ALT+V(2回押す)で、ユーザー設定のビューのダイアログを表示させます。
(3)追加ボタンを押し、ビューで名前を設定します。(印刷の設定にチェックがあることを確認)
(4)次の条件でフィルターをかけ、印刷設定(必要に応じて)し、ALT+V(2回押す)で同じように追加ボタンを押し名前を設定します。
(5)以上の要領で必要な分だけ名前をつけて設定します。
(6)すべての条件での設定完了後、ALT+V(2回押す)で表示ボタンを押し、設定した条件を呼び出し、印刷を実行します。

この条件をマクロで記録させて実行させても良いかもしれません。
    • good
    • 0
この回答へのお礼

もう少し、手作業が減らせると
有難いのですが…。

でも、こういう機能もあるんですね。
勉強になりました。

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

お礼日時:2004/08/19 01:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています