
エクセル で作成した名簿のフィルター項目を変えながら印刷しなきゃいけない…。
フィルター変更⇒印刷⇒フィルター変更⇒印刷・・・
の繰り返しが面倒…。



面倒ですよね。
今回はフィルターの項目を自動で変えながら連続印刷する方法を
お伝えします。
サンプルとして使うエクセルデータ
こんな感じの疑似データをSheet1に用意しました。
A列からI列までのセルをテーブル化しています。


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



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


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



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


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



印刷する順序にもなりますので、必要に応じて番号を割り振ると便利です。
③:フィルタリングする項目がテーブル内にいくつあるかカウントする


M2セルには以下の関数が入力されています。
=COUNTIF(テーブル1[出身地],K2)
※上のサンプルの式では最後がK2になっていますが、それは式を入力するセルがM2だからです。
式を入力するセルがM3ならK3、M4ならK4を参照しましょう。



これにより、テーブル内のすべてのデータについて、各都道府県が何個存在するかを数えてくれます。
※UNIQUE関数は範囲内の値を重複がない状態で出力します。
UNIQUE(配列,[列の比較],[回数指定])
※COUNTIF関数は検索範囲内に条件を満たす値を何個あるかを出力します。
COUNTIF関数(検索範囲,条件)
④:どの都道府県でフィルタリングするのかを表示させる
別のシートSheet2に以下のような表を作っていきます。


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



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



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


B3からJ3までテーブルの見出しをコピペします。
B4に以下の式が入力してあります。
=FILTER(テーブル1,テーブル1[出身地]=Sheet1!B2)
A2の値を1から47まで変更する作業はマクロにしてもらいます。
そうすることでB2の都道府県名が変わり、抽出されるテーブルも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に「ああして」「こうして」って伝えながらコードが書けるのは便利ですよね。
その他、データ整理でよく使う関数についてもまとめています。





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





こんな記事も書いてます。


コメント