Excelで作成した名簿や商品一覧をもとに、帳票・ラベル・案内状などを連続印刷したい場面では、VLOOKUP関数とVBAマクロを組み合わせる方法が役立ちます。

印刷用シートに番号を入力するだけで、別シートの氏名、住所、商品名、金額を自動表示し、その内容を順番に印刷できれば、手作業による転記ミスも抑えられます。

差し込み印刷の仕組みをExcel内で完結させる場合、検索キー、VLOOKUP、印刷範囲、VBAの繰り返し処理をつなげて考えることが重要です。

この記事で扱う流れは、元データ表を準備し、印刷用シートでVLOOKUP表示を作り、マクロで検索番号を切り替えながら連続印刷する方法です。

サンプルデータは1行目を見出し行として作成し、2行目以降に差し込み対象のデータが並んでいる前提で解説します。

 

VLOOKUPとマクロによる連続印刷の基本設定

管理番号 氏名 住所 商品名 数量
A001 佐藤 花子 東京都新宿区 事務用紙 3
A002 鈴木 太郎 大阪府大阪市 封筒 5
A003 田中 恒一 愛知県名古屋市 ファイル 2

それではまず、ExcelでVLOOKUPを使った差し込み印刷を連続実行するための基本設定について解説していきます。

最初に結論を述べると、元データを一覧シートにまとめ、印刷用シートの検索キーをマクロで切り替える構成にすると、Wordの差し込み印刷を使わなくても定型帳票を連続出力できます。

ブック内には、一覧データを置く「顧客一覧」シートと、印刷レイアウトを置く「印刷用」シートを作成します。

印刷用シートのB2セルを検索キーの入力セルにし、VLOOKUP関数で必要な項目を参照する構成が分かりやすい方法です。

 

元データ一覧の列構成

まずは、差し込み元となるデータを顧客一覧シートに作成します。

1行目には管理番号、氏名、住所、商品名、数量などの見出しを入力し、2行目から1件ずつ記録します。

VLOOKUPで検索する値は、表のいちばん左側の列に置く必要があります。

たとえばA列を管理番号、B列を氏名、C列を住所、D列を商品名、E列を数量にすると、A列の番号を基準に各項目を取り出せます。

管理番号にはA001やA002のような重複しない値を設定しましょう。

番号が重複すると、VLOOKUPは上から最初に見つかったデータを返すため、意図しない宛先や商品が印刷されるおそれがあります。

VLOOKUPとマクロによる連続印刷の基本設定 - 元データ一覧の列構成

Excelのテーブル機能で一覧をテーブル化しておくと、後からデータを追加したときにも参照範囲を管理しやすくなります。

ただし、初めてマクロを組む場合は、通常のセル範囲として設計してから動作を確認しても問題ありません。

 

印刷用シートの検索キー

続いて、印刷用シートを作り、帳票のレイアウトを整えます。

宛名ラベルなら氏名と住所、納品書なら商品名、数量、金額、日付などを配置します。

ここではB2セルを検索用の管理番号セルとして使います。

B2セルはマクロが連続印刷中に書き換える場所なので、入力欄として分かる色にしておくと管理しやすくなります。

帳票の表題や会社名は固定文字として配置し、顧客ごとに変わる箇所だけを数式で表示する考え方です。

VLOOKUPとマクロによる連続印刷の基本設定 - 印刷用シートの検索キー

印刷用シートのB2セルに管理番号を入れたとき、氏名、住所、商品名などが自動表示され、1件分の帳票として完成する状態を先に作ります。

この状態まで整えば、連続印刷マクロは検索キーを順番に入れ替えて印刷するだけの処理になります。

 

印刷範囲と改ページの確認

印刷対象が1件分の帳票として収まるように、ページレイアウトの印刷範囲を設定します。

余白、用紙サイズ、横向きまたは縦向き、拡大縮小の設定もこの段階で確認します。

帳票が2ページに分割されると、連続印刷時に用紙の枚数が想定より増えることがあります。

マクロを実行する前に、検索キーを1件だけ入力して印刷プレビューを確認することが安全です。

印刷用シートには不要な作業用セルを置かず、印刷範囲の外側に管理項目を配置するか、別シートへ分ける方法がおすすめです。

【操作のポイント】連続印刷を始める前に、1件分の印刷プレビューで氏名、住所、改ページ、余白を確認します。

 

VLOOKUP関数による差し込み項目の作成

印刷用セル 表示内容 参照列
B5 氏名 顧客一覧のB列
B7 住所 顧客一覧のC列
B10 商品名 顧客一覧のD列
D10 数量 顧客一覧のE列

続いては、検索キーに応じて印刷項目を表示するVLOOKUP関数について確認していきます。

VLOOKUP関数の基本形は、検索値、検索範囲、列番号、検索方法の4つを指定する形です。

VLOOKUP関数の基本形

VLOOKUP(検索値, 範囲, 列番号, FALSE)

完全一致で管理番号を探す場合は、最後の引数にFALSEを指定します。

 

氏名と住所を表示する数式

印刷用シートのB5セルに氏名を表示する場合、次の数式を入力します。

検索値の$B$2は、印刷用シートの管理番号セルです。

検索範囲の顧客一覧!$A$2:$E$1000は、見出しを除いたデータ部分です。

列番号の2は、指定範囲の左から2列目である氏名列を意味します。

数式を別のセルへコピーする可能性があるため、検索セルと検索範囲には$を付けて絶対参照にするのが基本です。

住所をB7セルへ表示する場合は、列番号だけを3へ変更します。

VLOOKUP関数による差し込み項目の作成 - 氏名と住所を表示する数式

同じ管理番号に対して、氏名と住所が正しく組み合わさって表示されれば、差し込み項目の土台は完成です。

 

商品名と数量を表示する数式

VLOOKUP関数による差し込み項目の作成 - 商品名と数量を表示する数式

商品名は一覧の4列目、数量は5列目にあるため、VLOOKUPの列番号を変更して取得します。

商品名の数式

VLOOKUP(印刷用シートのB2セル, 顧客一覧のA2からE1000, 4, FALSE)

数量の数式

VLOOKUP(印刷用シートのB2セル, 顧客一覧のA2からE1000, 5, FALSE)

数式中の列番号は、Excelシートの列記号ではなく、検索範囲内で左から数えた順番です。

検索範囲をA列からE列に設定した場合、D列の商品名は4、E列の数量は5になります。

途中の列だけを含む検索範囲に変更した場合、列番号も新しい範囲を基準に数え直す必要があります。

数量のセルには、必要に応じて数値の表示形式や単位を設定します。

たとえばセルの表示形式をユーザー定義で0個と指定すれば、数値の後ろへ個を表示できます。

 

エラー表示を抑えるIFERROR関数

検索キーが空欄のときや、一覧に存在しない番号を入力したとき、VLOOKUPだけではN Aエラーが表示されます。

印刷用の帳票にエラー文字を見せたくない場合は、IFERROR関数でVLOOKUPを包みます。

最後の空文字は、検索結果がないときに空白表示へ置き換える指定です。

空欄のまま印刷すると誤った帳票を出力する可能性があるため、マクロ側でも管理番号の存在確認を行うと安心です。

【操作のポイント】VLOOKUPは完全一致のFALSEを指定し、入力前のエラーはIFERRORで見やすく整えます。

 

VBAによる検索キーの連続切り替え

一覧行 管理番号 マクロの処理
2 A001 印刷用B2へ入力して印刷
3 A002 印刷用B2へ入力して印刷
4 A003 印刷用B2へ入力して印刷

続いては、VLOOKUPの検索キーをVBAで順番に切り替える処理を確認していきます。

マクロでは、顧客一覧シートのA列を上から読み取り、各管理番号を印刷用シートのB2セルへ設定します。

数式の再計算後に印刷用シートを印刷すれば、番号ごとに内容が差し替わった帳票を連続出力できます。

連続印刷用.xlsm – Excel ● □ ×
ファイル ホーム 挿入 ページ レイアウト 数式 データ 校閲 表示 開発
貼り付け マクロ 太字 罫線 中央揃え 印刷
名前ボックス B2  fx  A001
A B C D
1
2 管理番号 A001
5 氏名 佐藤 花子
赤枠のB2セルへ一覧の管理番号を順番に入力します → 数式が更新されたら印刷します

 

基本となる連続印刷マクロ

ここでは、顧客一覧シートのA列にある管理番号を2行目から最終行まで順番に処理するマクロを作成します。

AltキーとF11キーを押してVBAエディターを開き、挿入から標準モジュールを追加します。

次のコードを貼り付けます。

Set wsListは元データの顧客一覧シート、Set wsPrintは帳票を印刷する印刷用シートを指定する部分です。

シート名は実際のブックの表示と完全に同じ文字へ変更してください。

CellsのAは検索キーが入っている列を示しており、管理番号をB列へ置いた場合はAをBへ変更します。

ForからNextまでの範囲で、2行目から最終行までを1行ずつ繰り返します。

 

数式再計算と印刷処理

マクロ内のwsPrint.Range(“B2”).Valueは、印刷用シートのB2セルへ管理番号を入力する命令です。

この値が変わると、氏名や住所に設定したVLOOKUP関数の結果も変化します。

Application.Calculateは、数式の更新が終わってから印刷するための再計算命令です。

通常は自動計算のExcelでも動作しますが、計算モードが手動になっている環境では特に重要になります。

再計算を入れずに高速で印刷すると、前の管理番号の表示内容が印刷される可能性があります。

wsPrint.PrintOutは、印刷用シートをプリンターへ送る命令です。

まず動作を確認したい場合は、PrintOutをPrintPreviewへ変更し、印刷プレビューで1件ずつ確認してもよいでしょう。

確認用の変更例

wsPrint.PrintPreview

 

印刷件数を限定する条件設定

一覧のすべてを印刷するのではなく、特定の行だけを印刷したいケースもあります。

たとえばF列に印刷対象という文字がある行だけを出力するなら、If文の条件を追加します。

この方法なら、不要なデータを除外しながら必要な帳票だけを連続印刷できます。

印刷対象の文字は全角と半角、余分な空白が異なるだけでも一致しないため、入力規則のリストで統一すると確実です。

【操作のポイント】最初はPrintPreviewで確認し、帳票内容と印刷順が正しいと確かめてからPrintOutへ切り替えます。

 

印刷順序と対象データの管理

管理番号 氏名 印刷対象 印刷順
A001 佐藤 花子 印刷対象 2
A002 鈴木 太郎
A003 田中 恒一 印刷対象 1

続いては、連続印刷で間違いを防ぐための印刷順序と対象データの管理について確認していきます。

マクロは一覧の上から下へ処理するため、表の並び順がそのまま印刷順になります。

 

印刷前の並べ替え

宛先番号順、担当者順、地区順などで出力したい場合は、顧客一覧シートをあらかじめ並べ替えます。

Excelのデータタブから並べ替えを実行し、管理番号以外の関連列も含めて表全体を並べ替えます。

1列だけを並べ替えると氏名や住所の対応関係が崩れるため、必ず表全体を選択して並べ替えます。

印刷順専用の列を作り、その列を昇順で並べる方法も実務では便利です。

 

印刷済みフラグの記録

同じデータを二重に印刷しないため、印刷が終わった行に印刷済みと記録する運用もできます。

マクロのPrintOutの後ろに、対象行のG列へ印刷済みと書き込む命令を追加します。

ただし、プリンターの紙詰まりや通信エラーが起きても、Excel側では処理済みと記録されることがあります。

重要書類では印刷物の実物と一覧の記録を照合しましょう。

 

空白行と重複番号の対策

元データに空白行が混ざると、最終行の判定や印刷件数に影響する場合があります。

今回の基本マクロでは、管理番号が空白の行をIf文で除外しています。

重複した管理番号はVLOOKUPで区別できないため、事前に条件付き書式や重複の削除機能で確認します。

特に住所録を複数人で編集する場合は、管理番号を手入力せず、採番ルールを決めて運用することが大切です。

【操作のポイント】印刷順は一覧の並び順で決まるため、マクロ実行前に対象件数と並べ替え結果を確認します。

 

連続印刷時のエラーと安全な運用

症状 主な原因 確認箇所
N Aエラー 管理番号が見つからない 検索キーと一覧A列
前の内容が印刷される 再計算不足 Application.Calculate
実行できない マクロが無効 ファイル形式とセキュリティ

続いては、VLOOKUPとマクロによる連続印刷で起こりやすいエラーと安全な運用について確認していきます。

大量印刷では一度の誤りが多くの用紙ロスにつながるため、少件数のテストを先に行うことが欠かせません。

 

VLOOKUPのN Aエラー

N Aエラーは、B2セルの管理番号が一覧のA列に見つからないときに表示されます。

見た目が同じ番号でも、先頭や末尾に空白が含まれていたり、文字列と数値の形式が異なったりすると一致しないことがあります。

管理番号をA001のような文字列で扱う場合は、一覧と印刷用の両方で文字列として統一します。

IFERRORで表示を隠すだけでなく、元データの不整合を修正することが根本的な対策です。

 

マクロ有効ブックの保存形式

VBAコードを保存するブックは、Excelマクロ有効ブックの形式で保存する必要があります。

保存時にファイルの種類をExcelマクロ有効ブックに設定し、拡張子をxlsmにします。

通常のxlsx形式で保存すると、VBAプロジェクトが保存されず、次回開いたときにマクロが消えてしまいます。

マクロを含むファイルは、信頼できる保存場所で管理し、バックアップを作成してからコードを編集します。

 

テスト印刷とプリンター設定

本番前には、対象を2件から3件に絞ってテスト印刷します。

氏名、住所、商品名、印刷順、用紙向き、両面印刷の設定を確認します。

PDFとして出力するプリンターを一時的に選択すると、紙を使わずにページ順と内容を確認できます。

安全な確認手順は、印刷プレビュー、PDF出力、少件数の実機印刷、本番の順番です。

意図しない大量印刷を止めるため、初回は必ずPrintPreviewまたはPDF出力で動作を確認しましょう。

【操作のポイント】本番印刷の前に少件数でテストし、xlsm形式で保存されていることも確認します。

 

まとめ エクセルのVLOOKUPを使った差し込み印刷の連続印刷方法

ExcelでVLOOKUPを使い、マクロで差し込み印刷を連続実行する方法をまとめます。

最初に顧客一覧シートへ管理番号を先頭列として配置し、氏名、住所、商品名、数量などを1行1件で整理します。

次に印刷用シートの検索キーセルへVLOOKUP関数を設定し、管理番号を入れるだけで帳票の内容が切り替わる状態を作ります。

連続印刷マクロでは、一覧の管理番号を印刷用シートへ順番に入力し、再計算後に印刷する流れが基本です。

VLOOKUPは完全一致のFALSEを指定し、検索値と検索範囲を絶対参照にすると、数式のコピーや保守がしやすくなります。

VBAのPrintOutを使う前には、PrintPreviewまたはPDF出力で印刷内容を確認しましょう。

印刷対象の列、印刷済みの記録、並べ替え用の列を用意すれば、件数が多い帳票や宛名ラベルにも応用できます。

マクロ有効ブックはxlsm形式で保存し、信頼できるデータだけを対象にして、安全で効率的な連続印刷へつなげていきましょう。

ABOUT ME
white-circle7338
私自身が今まで経験・勉強してきた「エクセル」「ビジネス用語」「生き方」などの情報を、なるべくわかりやすく、楽しく、発信していきます。 一緒に人生を楽しんでいきましょう