Excel 宛名1ページ1枚 案内文書印刷 ― スピンボタン+Print_Areaで差し込み印刷風

1. この記事でできること

「○○のご案内」のような定型文書に宛名・住所・敬称を自動差し替えし、1宛先=1ページで印刷します。Excelのスピンボタン(フォームコントロール)で表示開始番号を切り替え、10件ずつ一括印刷する仕組みです。VBAマクロは使いません。

Wordの差し込み印刷に不慣れな同僚に渡しても「スピンボタンを回して印刷を押すだけ」で作業が完了します。ただし、1件1ページ分のテンプレートを10件分(=10ページ分)シート上に仕込むため、ファイルサイズが通常より大きくなります。また、数式(VLOOKUPの列番号やIFの条件)を間違えるとズレたまま大量印刷してしまうリスクがあるため、事前に印刷プレビューで全ページを確認してください。

2. シート構成

ブックには「案内文書」と「宛先リスト」の2シートを使います。

案内文書印刷.xlsx
案内文書
宛先リスト

▼ 案内文書シートの構成(1ページ=50行、10ページ分=500行をテンプレート化)

ABCDE
1(日付・発信元ヘッダー)
2=VLOOKUP($Z$1, 宛先リスト!...)← 会社名
3=VLOOKUP($Z$1, ...)← 部署名
4=VLOOKUP($Z$1, ...) & " 様"← 氏名+様
5
6◯◯のご案内
7-45(案内文書の本文)
46-50(余白・フッター)
51── 2件目テンプレート開始 ──
51=VLOOKUP($Z$1+1, ...)← 2件目の会社名
(以降50行単位で繰り返し × 10件)
500(10件目テンプレート終了)
$Z$1 セルにスピンボタンを連動させます。Z1=1なら1〜10件目、Z1=11なら11〜20件目が表示されます。2件目のVLOOKUPは $Z$1+1、3件目は $Z$1+2 … 10件目は $Z$1+9 を検索値にします。

▼ 宛先リスト

ABCDE
1No氏名会社名部署名敬称条件
21山田太郎株式会社ABC営業部
32鈴木花子DEF株式会社総務部
43佐藤一郎GHI商事経理部
(データを追加)

3. 案内文書テンプレートの作成

まず1件目のテンプレートを50行で作成します。1行目に日付と発信元、2〜4行目に宛名情報(数式で自動取得)、6行目にタイトル、7行目以降に本文を入力します。ページ設定で「50行=1ページ」になるよう行の高さと余白を調整してください。

1
「ページレイアウト」→「ページ設定」で余白・用紙サイズを設定します。行の高さを調整して50行がちょうど1ページに収まるようにします(A4縦なら1行あたり約15ポイントが目安)。
2
1件目(1〜50行)のテンプレートが完成したら、1〜50行をコピーして51行目に貼り付けます。これを10回繰り返して500行のテンプレートを作ります。
3
各テンプレートの宛名数式だけを修正します。1件目は $Z$1、2件目は $Z$1+1、…、10件目は $Z$1+9 を使います(詳細は次のセクション)。

4. 宛先データを差し込む数式

各ページの宛名セルに入れる VLOOKUP 数式です。n件目のテンプレートでは検索値を $Z$1 + (n-1) にします。

1件目(1〜50行)の数式

A2:会社名 =IFERROR(VLOOKUP($Z$1, 宛先リスト!$A:$E, 3, FALSE), "")
A3:部署名 =IFERROR(VLOOKUP($Z$1, 宛先リスト!$A:$E, 4, FALSE), "")
A4:氏名+様 =IFERROR(VLOOKUP($Z$1, 宛先リスト!$A:$E, 2, FALSE) & " 様", "")

2件目(51〜100行)の数式

A52:会社名 =IFERROR(VLOOKUP($Z$1+1, 宛先リスト!$A:$E, 3, FALSE), "")

n件目の一般形

会社名の一般形 =IFERROR(VLOOKUP($Z$1+(n-1), 宛先リスト!$A:$E, 3, FALSE), "") ※ n=1なら $Z$1, n=2なら $Z$1+1, ... n=10なら $Z$1+9
IF で条件分岐する例:宛先リストのE列に「御中」フラグがある場合、氏名の代わりに会社名+御中と表示する数式:
=IF(VLOOKUP($Z$1,宛先リスト!$A:$E,5,FALSE)="御中", VLOOKUP($Z$1,宛先リスト!$A:$E,3,FALSE)&" 御中", VLOOKUP($Z$1,宛先リスト!$A:$E,2,FALSE)&" 様")
⚠ 数式ミスに注意:VLOOKUP の列番号(2=氏名、3=会社名、4=部署名)を間違えると、全ページで会社名と部署名が逆になるなどのミスが大量に発生します。テンプレートをコピーした後、必ず印刷プレビューで最初の数ページと最後のページを確認してください。

5. スピンボタンの設置と設定

スピンボタン(フォームコントロール)を使い、Z1セルの値を切り替えます。

1
「開発」タブ →「挿入」→ フォームコントロールの「スピンボタン」をクリックし、シート上にドラッグして配置します(Z1セル付近が望ましい)。
2
配置したスピンボタンを右クリック →「コントロールの書式設定」を開きます。
3
以下のように設定します:
現在値:1、最小値:1、最大値:91(100件対応の場合)、変化の増分:10、リンクするセル:$Z$1
4
「OK」で閉じます。スピンボタンを押すとZ1が1→11→21→…と変化し、それに連動して全ページの宛名が切り替わります。
Z1 セルの値:
1
→ 表示される宛先:1件目 〜 10件目

6. Print_Area に動的数式を設定する

宛先リストのデータ件数に応じて、印刷範囲を自動調整します。Z1 の値から10件分(=500行)を上限とし、実際にデータがある件数分だけに絞ります。

XLOOKUP 版(Microsoft 365 推奨)

Print_Area 数式 =案内文書!$A$1:INDEX( 案内文書!$A:$E, MIN( (XLOOKUP(TRUE, INDEX(宛先リスト!$A:$A<>"",0), ROW(宛先リスト!$A:$A), ,0,-1) - 1 - 案内文書!$Z$1 + 1) * 50, 500 ), 5 )

宛先リストの最終データ番号から Z1 の開始番号を引き、表示件数を算出します。それに50を掛けて行数に変換し、500行(10ページ)を上限とします。例:データが25件でZ1=21なら、表示件数=25-21+1=5件、印刷範囲=5×50=250行(5ページ)。

COUNTA 版(シンプル版)

Print_Area 数式 =案内文書!$A$1:INDEX( 案内文書!$A:$E, MIN( (COUNTA(宛先リスト!$A:$A) - 1 - 案内文書!$Z$1 + 1) * 50, 500 ), 5 )
💡 もっと簡単な方法:データ件数が常に10の倍数(10件、20件、30件…)であれば、Print_Area は固定で =案内文書!$A$1:$E$500 としてZ1だけ変えても問題ありません。空白ページが出ますが、Z1 を正しく設定すれば実害はありません。

7. バッチ印刷の操作フロー

30件のデータを印刷する場合のフローです。

Z1 = 1
1〜10件目
→ 印刷
Z1 = 11
11〜20件目
→ 印刷
Z1 = 21
21〜30件目
→ 印刷
完了
1
スピンボタンで Z1 = 1 にセットします(初期状態)。
2
Ctrl+P で印刷プレビューを確認し、10ページに1〜10件目の宛名が正しく表示されていることを確認して印刷します。
3
スピンボタンを1回クリックして Z1 = 11 にします。11〜20件目に切り替わったことを確認して印刷します。
4
同様に Z1 = 21 にして 21〜30件目を印刷します。

8. ページプレビューのイメージ

Z1=1 のとき、10件の案内文書が10ページとして印刷されます。

1ページ
◯◯のご案内
2026年3月22日
株式会社ABC
営業部
山田太郎 様
2ページ
◯◯のご案内
2026年3月22日
DEF株式会社
総務部
鈴木花子 様
3ページ
◯◯のご案内
2026年3月22日
GHI商事
経理部
佐藤一郎 様
4〜10ページ
◯◯のご案内
…以降同様

9. Wordの差し込み印刷との比較

Word 差し込み印刷 この方法(Excel のみ)
必要なソフト Word + Excel(またはCSV) Excel のみ
操作スキル 差し込みフィールドの設定を理解する必要あり スピンボタンと印刷だけで操作可能
他の人に渡して作業してもらう 差し込み印刷の手順を教える必要がある 「▲▼で番号を変えて印刷」だけ伝えればOK
レイアウトの自由度 高い(Word の書式機能が使える) Excel のセル幅・行高に依存
ファイルサイズ テンプレート1ページ分で軽量 10ページ分のテンプレートを仕込むため大きくなる
一括印刷 全件一括で可能 10件ずつバッチ印刷(スピンボタン操作が必要)

10. 注意点とトラブルシューティング

Print_Area の数式が消える

「ページレイアウト」→「印刷範囲の設定」ボタンを押すと、名前の管理で設定した数式が静的な範囲に上書きされます。名前の管理からのみ操作してください。万が一のために数式をZ2セルなどにテキストとしてメモしておきましょう。

空白ページが印刷される

データが7件なのに10ページ印刷される場合、Print_Area の数式が正しく機能していません。名前の管理を開いて参照範囲にセクション6の数式が入っているか確認してください。

宛名が全ページ同じになる

すべてのテンプレートの検索値が $Z$1 のままになっている可能性があります。2件目は $Z$1+1、3件目は $Z$1+2 … となっているか確認してください。

スピンボタンが10ずつ動かない

「コントロールの書式設定」→「変化の増分」が1になっている可能性があります。10に変更してください。

11. まとめ

案内文書の宛名1ページ1枚印刷は、50行=1ページのテンプレートを10件分用意し、スピンボタンで Z1 の値を切り替えることで10件ずつ差し替え印刷する手法です。Print_Area に動的数式を設定すればデータ件数に応じてページ数が自動調整されます。Wordの差し込み印刷を知らない人にも渡せる手軽さがメリットですが、テンプレートを仕込む分のファイルサイズ増加と、数式のセットアップミスが印刷事故につながる点には注意してください。