[[20120612121830]] 『データーを絞り込んで印刷』(keisuke) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『データーを絞り込んで印刷』(keisuke)

Excel2003 OS WindowsXP です。
お世話になります。

A列 B列
品番 品名
1  あ
2  い
2  う
3  え
3  お
3  か

品番と入力してある1行目にオートフィルターをかけ、品番のところの
オートフィルターの一覧から1を選んで印刷、2を選んで印刷、3を選んで印刷
とこれを繰り返しております。なんとか自動でできないでしょうか?
品番は1、2、3とは限らず都度変わります(件数も変動します)ので
オートフィルターの一覧にあるぶんだけを印刷したいです。

方法は問いません、ようは品番ごとに絞り込んで印刷を一度にしたいという事です。

宜しくお願いいたします。


 VBAを使うことになるね。

 1.まず、フィルターオプションで、A列の品番を、どこか別シートに重複を無視して抽出(つまり、一意になる)
 2.その重複がなくなった品番リストを1つずつ取り出して、オートフィルター --> 印刷 これを繰り返す。

 こうなると思う。フィルターオプションのところ、オートフィルターのところ、フィルター結果の印刷のところは
 実際の操作をマクロ記録したらコードが生成される。これらは、ほとんどそのまま使うことができると思う。

 あとは、品番を取り出すループ処理を、これらの上にかぶせればいいんだけど、これぐらいのアドバイスで
 あとはできる?

 (ぶらっと)

 うえでかいたことをコードにするとこんな感じ。

 Sub Sample()
    Dim shW As Worksheet
    Dim c As Range

    Application.ScreenUpdating = False

    Set shW = Sheets("Sheet2")  '作業用シート
    shW.Cells.ClearContents     '作業シートのクリア

    With Sheets("Sheet1")       'データシート
        'A列の品番を重複を排除して作業シートに抽出
        .Columns("A").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=shW.Range("A1"), Unique:=True
        'オートフィルター設定があればいったん解除
        If .AutoFilterMode Then .AutoFilter.Range.AutoFilter
        'あらためてオートフィルター設定
        .Range("A1").AutoFilter
        'ユニークになった品番リストから品番を1つずつ抽出
        For Each c In shW.Range("A2", shW.Range("A" & shW.Rows.Count).End(xlUp))
            '抽出した品番の値でフィルタリングして印刷
            .AutoFilter.Range.AutoFilter Field:=1, Criteria1:=c.Value
            .PrintOut
        Next
        'オートフィルター解除
        .AutoFilter.Range.AutoFilter
    End With

    shW.Cells.ClearContents '作業シートのクリア
    Application.ScreenUpdating = True

    MsgBox "印刷終了"

 End Sub

 (ぶらっと)

ぶらっと様
ご返信、ありがとうございます。

VBAまで記入して頂き、大変助かりました。
申し訳ございません、最初のアドバイスでは仕組みが理解できませんでした。
あとから頂きましたコードをコピーして実行したら思い通りの事ができました。
コードを書き換えて使わせて頂きます。本当にありがとうございました。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.