エクセルで「フィルタリングの項目を変えながら連続印刷」する方法についてまとめました。
こんな感じの疑似データを用意しました。
今回は出身地ごとにフィルタリングしながら連続印刷していきたいと思います。
フィルタリングする項目を設定する。
出身地を昇順(50音順)にして番号を割り振ります。
※疑似データをテーブルにしておきましょう(範囲を選択し「Ctrl+T」でテーブル化)。
=SORT(UNIQUE(テーブル1[出身地]),,1)
これで重複なく取り出したフィルタリング項目を昇順で並べ替えます。
隣に対応する番号を割り振ります。
※UNIQUE関数は範囲内の値を重複がない状態で取り出します。
UNIQUE(配列,[列の比較],[回数指定])
※SORT関数は範囲の並び順を指定することができます。
SORT関数(配列,[並べ替えインデックス],[並べ替え順序],[並べ替え基準])
どの都道府県でフィルタリングするのかを表示する。
=XLOOKUP(L2,U4:U50,T4#)
これでL2に入力した値に応じた都道府県名が表示されるようになります。
このL2の値を1から47まで変更する作業はマクロにしてもらいます。
※XLOOKUP関数はVLOOUUPに変わる関数で、戻り値の指定が簡単にできるようになりました。検索先をテーブルにしておくと、検索先の項目が増えてもXLOOKUPの式を変える必要がないので管理も楽です。
XLOOKUP(検索値,検索範囲,戻り範囲,[見つかれない場合],[一致モード],[検索モード])
今回は出身地の抽出にスピル(参照元のデータの個数によって、出力データの個数を変えることをスピルと言います。今回はUNIQUE関数がスピル機能を持っています)を使っていますので、テーブル化せず、範囲(U4,U50,T4#)としました。
※#はスピルによって出力されたデータの範囲すべてという意味です。
フィルタリングする。
=FILTER(テーブル1,テーブル1[出身地]=K2)
これで出身地がK2の都道府県と一致した列だけが抽出されます。
※FILTER関数は配列のうち、設定した条件と一致した範囲を表示してくれます。
今回だとK2と同じ都道府県。
FILTER(配列,含む,[空の場合])
マクロを作成する。
※リボンに「開発」タブがない場合は以下の手順で「開発」タブを表示させましょう。
「ファイル」>「オプション」>「リボンのユーザー設定」>ウインドウ右の「メインタブ」の「開発」にチェック
「開発」>「マクロ」>マクロに名前を付けて「作成」
以下のコードを貼り付けます。
Sub フィルタ内容変更連続印刷()
Dim i As Integer
For i = 1 To 47
Range("L2").Value = i
ActiveSheet.PrintOut
Next
End Sub
これでL2セルの値を1から47まで変更させながら自動で印刷してくれます。
今回はL2の数字をマクロで変更し、L2の数字に対応する出身地をK2に表示させ、
K2に表示させた出身地でデータをフィルタリングしています。
※参照先やマクロで変更させる数字は必要に応じて変更してください。
その他、データ整理でよく使う関数についてもまとめています。
コメント