OFFSET関数による、印刷範囲を自動伸縮!

OFFSET関数を使えば、データ件数に応じて印刷範囲が自動伸縮します。
毎回手動で範囲を選ばなくても済み、ミスも省けます。
本記事でのゴールは、次のような「印刷範囲の自動伸縮」を目指します。
※GIFが小さくて見づらい場合は、クリックすると拡大します。

目次
手順1:サンプル表を準備
本記事では以下のサンプルデータを用意しました。
| A列:No | B列:商品名 | C列:売上金額 |
|---|---|---|
| 1 | 商品A | 100 |
| 2 | 商品B | 200 |
| 3 | 商品C | 150 |
| 4 | 商品D | 300 |
| 5 | 商品E | 250 |
| 6 | 商品F | 180 |
| 7 | 商品G | 210 |
| 8 | 商品H | 190 |
| 9 | 商品I | 220 |
| 10 | 商品J | 260 |
| 11 | 商品K | 240 |
手順2:通常通り、印刷範囲を設定する
次の手順に沿って、通常通り、印刷範囲を設定します。

ここまでは簡単ですね。慣れたものです
範囲指定→「ページレイアウト」→「印刷範囲」→「印刷範囲の設定」

手順3:「数式」→「名前の管理」→Print_Areaを選択
次の設定します。
💡 仕組みをちょっとだけ解説します
Print_Areaとは?
手順2で設定した印刷範囲のことです。
範囲を指定すると、自動的にこの名前が作られます。
仕組みとしては…
Print_Areaをデータ件数に合わせて自動的に伸縮させます。
こうした「動的な範囲指定」を実現できるのが OFFSET関数です。

ここまでは簡単ですね。慣れたものです
「数式」→「名前の管理」→「Print_Areaを選択」→「参照範囲を次の式に置き換える」
=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$B:$B)-1,COUNTA(Sheet1!$2:$2))
- OFFSET:基準セル($A$1)から行列移動なし
- 高さ:B列の入力行数
- 幅:2行目の入力列数



Offset関数の仕組みを詳しく知りたい方へ:https://biz-data-analytics.com/excel/1893/
手順4:入力を追加→改ページプレビューで確認
B列に商品を追加すれば、印刷範囲が自動伸縮して反映されます。

✅ 注意点とご案内
注意点(OFFSET+COUNTA方式)
- 空白セルがある列だと、正しく範囲を取得できない場合がある
↳ COUNTAは「COUNTA は空でないセルの個数を返す」を数える仕様のため
↳ COUNTA関数の解説と使用例 -空白のセルを除くすべてのデータをカウントする- に詳しい話を記載しております。 - 記事の数式は「B列の入力行数」を基準にしているため、A列やC列だけに入力しても印刷範囲は広がらない
📌 別記事で紹介予定(テーブル化)
OFFSETの課題をそもそも避けたいなら、範囲を テーブル形式 にする方法もあります。
- データの追加・削除に自動で対応
- どの列に入力しても範囲が拡張
- COUNTAの数式管理が不要
👉 テーブル化の詳しい使い方は、別記事で具体的に紹介予定 です。
🧑🏫 まとめ
OFFSET関数を使った印刷範囲の自動伸縮は、データ追加・削除に強く、手間ゼロの実務向け設定。
ただし空白セルや基準列の取り方には注意が必要です。
👉 OFFSET方式の弱点を避けたいなら、テーブル化 という選択肢もあります(詳細は別記事で解説予定)。

