
Excelで作成した名簿を
フィルターの項目を変えながら印刷したい。
でも、
フィルター変更⇒印刷
⇒フィルター変更⇒印刷
⇒・・・
の繰り返しが面倒…。



面倒ですよね。
今回はフィルターの項目を自動で変えながら
連続印刷する方法をお伝えします。


サンプルとして使う疑似Excelデータ
こんな感じの疑似データをSheet1に用意しました。
A列からI列までのセルをテーブル化しています。
※テーブル化は範囲を選択し、「Ctrl+T」からできます。


今回は出身地ごとにフィルタリングしながら連続印刷していきます。



新潟県だけにフィルタして印刷
⇒香川県だけにして印刷
⇒…
というように、
表に存在するすべての都道府県ごとに
フィルターをかけて印刷する操作を自動で行います。
フィルター項目を変えながら連続印刷する方法
テーブルからフィルタリングしたい項目を抽出する必要があります。
今回はテーブル内のすべての都道府県を抽出します。
①:フィルタリングしたい項目のリストを作る


上図のK列のように都道府県をリストアップします。
リストアップにはUNIQUE関数が便利です。
UNIQUE関数は重複を除いた一意の値だけを取り出すための関数です。
上図の例ではK2セルに以下の式を入力してあります。
=UNIQUE(テーブル1[出身地])
これで、表内にある都道府県を重複なく出力してくれています。
※今回はA列からI列までのセルをテーブル化しているため、
UNIQUE関数が列名ではなく「テーブル1[出身地]」を参照しています。



フィルタリングしたい項目のリストがすでにあればこの作業は不要です。
重複がないようにリストを作成してください。
②:フィルタした項目に番号を割り振る


上図のL列にあるように、各都道府県に番号を付けます。



印刷する順序にもなりますので、
必要に応じて番号を割り振ると便利です。
③:どの都道府県でフィルタリングするのかを表示させる
別のシートSheet2に以下のような表を作っていきます。
ここ(③)では下の画像の左上(A1~B2まで)のセルを作ります。


A2は数字を入れるセルとします。



A2セルは空白でOKです。
後でA2セルの数字を1から順番に自動で変更しつつ、印刷します。
B2には以下の式を入れてあります。
=XLOOKUP(A2,Sheet1!L:L,Sheet1!K:K)
これはA2に入力した数字を先ほど作成した「フィルタリングナンバー(Sheet1のL列)」から検索し、
A2と同じ「フィルタリングナンバー(Sheet1のL列)」に対応する「フィルタリングリスト(Sheet2のK列)」の
都道府県を出力してくれます。



1なら新潟県、2なら香川県という具合です。
※XLOOKUP関数はVLOOKUPに置き換えられる関数で、戻り値の指定が簡単にできるようになりました。
XLOOKUP(検索値,検索範囲,戻り範囲,[見つからない場合],[一致モード],[検索モード])



VLOOKUP だと検索先の範囲設定が必要ですし、
検索列が検索範囲の一番左にないといけません。
戻り値の選択も列番号なので、テーブルが変更された時に
関数を再度編集しなければなりません。
XLOOKUP をお勧めします。
これでA2に入力した値に応じた都道府県名がB2に表示されるようになります。
※試しにB2に適当な数字を入れてみてください。番号に対応した都道府県名B2に出力されます。
④:フィルタ対象になったデータだけをテーブルから抽出する
ここ(④)ではB3~J14に該当するセルを作成します。


Sheet1の見出しだけをすべてコピーし、Sheet2のB3からJ3へペーストします。
B4に以下の式が入力してあります。
=FILTER(テーブル1,テーブル1[出身地]=Sheet1!B2)
Sheet1のB2に表示された都道府県名が含まれる行だけが表示されるようになります。
FILTER関数は「スピル」という機能を含んでいる関係で、テーブル内では使えない関数です。
Sheet2はテーブル化せずに「範囲」のままにしておきましょう。
※スピルは一つのセルに式を入力した時に該当する値を複数下のセルに自動で出力する機能です。
A2の値を1から47まで変更する作業はマクロにしてもらいます。
そうすることでSheet1のB2の都道府県名が変わり、
抽出されるテーブルもSheet1のB2に表示された県が含まれるものだけになります。



A2の数字を手入力で変更して、
特定の都道府県だけが抽出されるか確認しましょう。
※FILTER関数は配列のうち、設定した条件と一致した範囲を表示してくれます。
今回だとB2と同じ都道府県。
FILTER(配列,含む,[空の場合])
⑤:マクロを作成する
※リボンに「開発」タブがない場合は以下の手順で「開発」タブを表示させましょう。
「ファイル」>「オプション」>「リボンのユーザー設定」>ウインドウ右の「メインタブ」の「開発」にチェック
「開発」>「マクロ」>マクロに名前を付けて「作成」
以下のコードを貼り付けます。
Sub フィルタ内容変更連続印刷()
Dim i As Integer
For i = 1 To 47
Range("A2").Value = i
ActiveSheet.PrintOut
Next
End Sub



実際の画面だと次のようになります。


これでA2セルの値を1から47まで変更させながら自動で印刷してくれます。
今回はA2の数字をマクロで変更し、A2の数字に対応する出身地をB2に表示させ、
B2に表示させた出身地でデータをフィルタリングしています。
※印刷範囲はテーブル全体にしておきましょう。
※参照先やマクロで変更させる数字は必要に応じて変更してください。
※マクロ内で「ActiveSheet.Printout」としていますので、
印刷したい画面を表示した状態でマクロを起動してください。



ちなみに、先ほどのマクロのコードをCopilotに貼り付けて、
「印刷ではなくて、PDFを作成するように書き換えて」等依頼すると、
PDFを出力してくれるマクロも作成できます。
AIに「ああして」「こうして」って伝えながらコードが書けるのは
便利ですよね。
その他、データ整理でよく使う関数についてもまとめています。





差し込み印刷の便利な使い方についてはこちらにまとめています。


Excel で項目を連続で変更する操作は、
業務効率化に役立つ便利なテクニックです。
ただ、
- 実際のデータ構造が複雑
- どこまで適用できるか分からない
- 他の処理と組み合わせたい
といった段階で手が止まることもよくあります。
こうした実務に合わせた運用や、業務全体での使い方の整理については、
こちらから相談できます。
→ 業務効率化・ICT活用の相談はこちら

コメント