[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データーを絞り込んで印刷』(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.