Excel シール残骸を活用 ― 開始位置を指定して途中から印刷する方法

1. 「シール残骸」とは何か?

10面ラベルシールで8件だけ印刷すると、シール1枚目の9番目と10番目が空きのまま残ります。この「使いかけのシール」が残骸です。通常はこのシールを捨てるか、次回の先頭に手書きすることになりますが、この方法では次回印刷時に「残骸シールの空き面から印刷を開始する」ことで無駄をなくします。

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

10面ラベルシールにおいて、残骸(使いかけシール)の空き面の開始位置を指定し、そこから新しいデータを詰めて印刷します。前回の印刷で面①〜⑧まで使った場合、今回は面⑨から印刷を開始し、残りのデータは2枚目以降に続きます。開始位置はセルに数値を入力するだけで切り替えられます。

3. 仕組みの概要 ― 2つのパラメータ

この方法で使うパラメータは2つだけです。

パラメータ説明
Y1 セル
開始面番号
残骸シールの何番目の面から印刷を始めるか。1〜10の数値。前回8面使ったなら 9 を入力。
Y2 セル
データ件数
(自動計算)
宛先リストのデータ件数を COUNTA で自動算出。手入力不要。

内部の計算:

開始面番号が1以外のとき、1枚目のシールの面①〜面(Y1-1)を空白にします。データは面Y1から順に配置され、10面を超えたら2枚目に続きます。Print_Area は最終データの面を含むページ(50行単位)まで自動拡張されます。

4. シート構成

ラベル印刷_残骸対応.xlsx
ラベル
宛先リスト
設定

▼ ラベルシート(通常版と同じ6列レイアウト、ただし面番号の計算にオフセットが加わる)

ABCDEF
1 面①:開始面≤1 → データ1件目 / 開始面>1 → 空白 面②:開始面≤2 → データ / 開始面>2 → 空白
2-5 (住所〜氏名) (住所〜氏名)
6-10 面③ 面④
(以降 5行単位で面⑤〜⑩、2ページ目以降も同様)
ポイント:面番号がY1(開始面番号)より小さい面は空白を表示します。Y1以降の面にデータを順番に配置します。

▼ 宛先リスト(通常版と同じ構成)

ABCDEF
1No氏名郵便番号住所1住所2会社名・部署
21山田太郎100-0001東京都千代田区…◯◯ビル3F株式会社ABC 営業部
(データを追加)

▼ 設定シート(パラメータ管理)

ABC
1項目説明
2開始面番号9残骸の空き面の位置(1〜10)
3データ件数=COUNTA(宛先リスト!B:B)-1自動計算(手入力不要)
4必要面数=B2-1+B3スキップ面+データ件数
5印刷枚数=CEILING(B4/10,1)必要なA4シール枚数
操作は B2 セル(開始面番号)を変えるだけです。残りは自動計算されます。

5. 面番号の計算式 ― 開始位置オフセット

通常のラベル印刷では、各面に「何番目のデータを表示するか」を面番号から直接計算しました。残骸対応版では、面番号から開始面番号を引いてデータ番号を求めます。

面番号 → データ番号 の変換 面番号 = (INT((ROW()-1)/5)) * 2 + 列オフセット ※ 左面:列オフセット = 1、右面:列オフセット = 2 データ番号 = 面番号 - (開始面番号 - 1) ※ データ番号 ≤ 0 の面は空白にする(前回使用済み面) ※ データ番号 > データ件数 の面も空白にする(データ切れ)

たとえば開始面番号=9の場合、面①〜⑧のデータ番号は -7〜0 なので空白。面⑨のデータ番号=1で1件目のデータ、面⑩のデータ番号=2で2件目が入ります。面⑪(2枚目の1面目)からは3件目以降が続きます。

6. ラベルシートの数式(具体例)

設定シートの B2 セルを名前「開始面」として定義しておくと数式が読みやすくなります(名前の管理で 名前:開始面、参照範囲:=設定!$B$2)。

6-1. A1セル(左面・郵便番号行)

A1:左面の郵便番号 =IF( (INT((ROW()-1)/5))*2+1 < 開始面, "", IFERROR( "〒" & VLOOKUP( (INT((ROW()-1)/5))*2+1 - (開始面-1), 宛先リスト!$A:$F, 3, FALSE ), "" ) )

最初のIFで「この面が開始面より前(=前回使用済み)なら空白」と判定します。開始面以降の面は通常通りVLOOKUPでデータを取得しますが、検索値から (開始面-1) を引くことで、データ番号がズレなくなります。

6-2. D1セル(右面・郵便番号行)

D1:右面の郵便番号 =IF( (INT((ROW()-1)/5))*2+2 < 開始面, "", IFERROR( "〒" & VLOOKUP( (INT((ROW()-1)/5))*2+2 - (開始面-1), 宛先リスト!$A:$F, 3, FALSE ), "" ) )

6-3. 氏名行(A5:左面の例)

A5:左面の氏名 =IF( (INT((ROW()-1)/5))*2+1 < 開始面, "", IFERROR( VLOOKUP( (INT((ROW()-1)/5))*2+1 - (開始面-1), 宛先リスト!$A:$F, 2, FALSE ) & " 様", "" ) )

6-4. 数式のコピー方法

左面(A1:C5)と右面(D1:F5)の数式を作成したら A1:F5 を選択し、50行目まで一括コピーします。開始面を名前定義にしているので絶対参照の問題はありません。2枚目以降(51行目〜)も同様にコピーを続けてください。

7. Print_Area の動的数式

データ件数に開始面オフセットを加算し、CEILING で50行単位に切り上げます。

XLOOKUP 版

Print_Area 数式 =ラベル!$A$1:INDEX( ラベル!$A:$F, CEILING( (設定!$B$4) * 5 / 2, 50 ), 6 ) ※ 設定!B4 = 必要面数 = (開始面-1) + データ件数 ※ 必要面数×5/2 で最終行を計算(左右2列なので÷2、1面5行なので×5)

より正確に XLOOKUP で最終行を求める版:

Print_Area 数式(精密版) =ラベル!$A$1:INDEX( ラベル!$A:$F, CEILING( XLOOKUP(TRUE, INDEX(ラベル!$A:$A<>"",0), ROW(ラベル!$A:$A), ,0,-1), 50 ), 6 )
⚠ 落とし穴:開始面が1のとき(残骸なし=通常印刷)もこの数式はそのまま動作します。特別な分岐は不要です。「印刷範囲の設定」ボタンは押さないでください。

8. 操作手順(ステップバイステップ)

1
前回の印刷結果を確認します。シール1枚目で面①〜⑧まで使ったなら、空いているのは面⑨から。
2
「設定」シートの B2 セル(開始面番号)に 9 を入力します。
3
「宛先リスト」シートに今回印刷したいデータを入力します。
4
「ラベル」シートに切り替え、面⑨〜⑩に1〜2件目のデータが表示され、面①〜⑧が空白になっていることを確認します。
5
Ctrl+P で印刷プレビューを開きます。1枚目は面⑨⑩だけにデータが入り、面①〜⑧が空白(前回使用済み部分に重ならない)ことを確認します。
6
使いかけのシール(残骸)をプリンターにセットして印刷します。面①〜⑧には何も印刷されず、面⑨⑩から新しいデータが印字されます。
7
2枚目以降は新しいシールに通常通り印刷されます(面①から順に配置)。
8
次回使用時は、今回最後に使った面の次の番号を B2 にメモしておきます。

9. ビジュアル解説 ― 開始位置による印刷結果の違い

ケースA:開始面=1(残骸なし、通常印刷)

データ12件の場合:

1枚目
全面使用(10件)
① データ1
② データ2
③ データ3
④ データ4
⑤ データ5
⑥ データ6
⑦ データ7
⑧ データ8
⑨ データ9
⑩ データ10
2枚目
2件+空き8面
① データ11
② データ12
空き
空き
空き
空き
空き
空き
空き
空き

ケースB:開始面=9(前回8面使用、残骸の面⑨⑩から開始)

データ12件の場合:

1枚目(残骸シール)
面⑨⑩にデータ → 残骸を活用
① 使用済
(前回印刷)
② 使用済
(前回印刷)
③ 使用済
(前回印刷)
④ 使用済
(前回印刷)
⑤ 使用済
(前回印刷)
⑥ 使用済
(前回印刷)
⑦ 使用済
(前回印刷)
⑧ 使用済
(前回印刷)
⑨ データ1
← ここから開始
⑩ データ2
2枚目(新品シール)
面①〜⑩にデータ3〜12
① データ3
② データ4
③ データ5
④ データ6
⑤ データ7
⑥ データ8
⑦ データ9
⑧ データ10
⑨ データ11
⑩ データ12

ケースC:開始面=4(前回3面使用、残骸の面④から開始)

データ5件の場合:

1枚目(残骸シール)
面④〜⑧にデータ5件 → 1枚で収まる
① 使用済
② 使用済
③ 使用済
④ データ1
← 開始
⑤ データ2
⑥ データ3
⑦ データ4
⑧ データ5
⑨ 空き
⑩ 空き

10. シナリオ別の設定例

シナリオ1:前回7件印刷 → 残り3面 → 今回15件

開始面番号(B2)8(前回7面使用、8面目から空き)
データ件数15件
必要面数(8-1)+15 = 22面
印刷枚数CEILING(22/10,1) = 3枚

1枚目:面①〜⑦は空白、面⑧〜⑩にデータ1〜3。2枚目:面①〜⑩にデータ4〜13。3枚目:面①②にデータ14〜15、面③〜⑩は空き。

シナリオ2:前回ぴったり10件 → 残骸なし → 今回3件

開始面番号(B2)1(残骸なし)
データ件数3件
必要面数(1-1)+3 = 3面
印刷枚数1枚

1枚目:面①〜③にデータ、面④〜⑩は空き。通常印刷と同じ結果です。

シナリオ3:前回9件印刷 → 残り1面 → 今回1件だけ

開始面番号(B2)10
データ件数1件
必要面数(10-1)+1 = 10面
印刷枚数1枚

1枚目:面①〜⑨は空白、面⑩にデータ1件。残骸シールの最後の1面だけを使い切ります。

11. 注意点とよくある質問

プリンターの給紙位置

残骸シールをプリンターにセットするとき、上下・表裏の向きに注意してください。多くのインクジェットプリンターでは印刷面を下にして手前からセットしますが、機種によって異なります。先に白紙で試し印刷して向きを確認することをお勧めします。

前回使用済みの面に重ねて印刷されないか?

開始面より前の面はIFで空文字("")を返すため、印刷データは出力されません。ただしセルの罫線や背景色がある場合はそれが印刷される可能性があります。ラベルシートの書式設定で、罫線は「なし」、背景色は「なし」にしておくのが安全です。

開始面番号を間違えたら?

開始面番号を実際より小さく設定すると、前回使用済みの面にデータが重なって印刷されます。逆に大きく設定すると空き面が余計にできて無駄が出ます。前回の印刷が終わったら「次回の開始面番号」を設定シートのメモ欄(例:C2セル)に記録しておく運用がお勧めです。

データ件数が10面×複数枚を超える場合

テンプレートの行数が不足します。あらかじめ多めに数式をコピーしておくか(例:500行=10枚分)、必要に応じて行を追加してください。ただしテンプレートを増やすほどファイルサイズが大きくなります。

COUNTA が正しくカウントされない

IFERROR で "" を返すセルは COUNTA でカウントされます。XLOOKUP 版の Print_Area 数式を使うか、宛先リストの A列(No列)でカウントすれば正確です。

数式セットアップ時のミスに注意

⚠ 重要:この方法はIF判定とVLOOKUPの組み合わせが複雑なため、数式のコピーミスが起きやすいです。特に以下の点を入念に確認してください:

・左面(A列)と右面(D列)で列オフセットが 1 と 2 で正しく分かれているか
・VLOOKUPの列番号(2=氏名、3=郵便番号、4=住所1、5=住所2、6=会社名)が正しいか
・「開始面」の名前定義が 設定!$B$2 を正しく参照しているか
・印刷プレビューで「使用済み面が空白」「開始面からデータが正しく入っている」ことを全ページ確認

12. まとめ

シール残骸の活用は、設定シートの「開始面番号」を変えるだけで、使いかけのラベルシールの空き面からデータを詰めて印刷できる仕組みです。核となるのは、面番号と開始面番号の差分でデータ番号を算出するIF+VLOOKUPの数式と、必要面数に基づくCEILINGのPrint_Area数式の2つです。

開始面=1にすれば通常の10面ラベル印刷と同じ動作になるため、残骸対応版のファイルひとつで両方のケースに対応できます。前回の印刷後に「次回の開始面番号」をメモしておく運用を定着させれば、シールの無駄を大幅に削減できます。

Word の差し込み印刷を使えない人にも渡しやすい方法ですが、数式の構造がやや複雑なため、初回セットアップ時のミスには十分注意してください。テンプレートを多く仕込むことでファイルサイズが大きくなる点もあわせて認識しておきましょう。

💡 運用のコツ:設定シートの C2 セルに「次回開始面:___」のメモ欄を作り、印刷のたびに更新する習慣をつけましょう。これだけでシール残骸の管理が格段に楽になります。