【Excel】エクセルにてページ番号をセルに表示(挿入)させる方法【関数を使用?】 | モアイライフ(more E life)
EXCEL作成代行・自動化サービス開始(^^)/

EXCEL作成代行・お悩み解決・関数や数式の追加・グラフ作成大量データの一括加工などお任せください!

→面倒・難しい作業を丸投げする♪

【Excel】エクセルにてページ番号をセルに表示(挿入)させる方法【関数を使用?】

Excelのスキルアップ
本サイトでは記事内に広告が含まれています

この記事では「エクセルにてページ番号をセルに表示(挿入)させる方法」について解説していきます。

方法としては下記を用いて実現することになるでしょう。

・get.document(50)関数

・VBAマクロ

それでは、具体例を用いて解説しましょう。

 

スポンサーリンク

エクセルにてページ番号をセルに表示(挿入)させる方法1【関数使用】

それではエクセルにてページ番号をセルに表示(挿入)する方法について確認します。

まずはget.document(50)関数を使用した手法を紹介します。

 

下記サンプルでは、各ページの左角に「ページ番号 / 総ページ数」を書き出すことを想定しています。

まずは総ページ数を出力するための準備をします。

リボンより「数式」-「名前の定義」をクリックします。

「名前の管理」ダイアログが開くので「新規作成」ボタンをクリックします。

「新しい名前」ダイアログが開いたら、参照範囲に「get.document(50)」と入力します。

なお、名前は任意で日本語でも構いません。

コメントについては入力していなくても動作には無関係ですが、

「何のために作った?」

「どんな動作をする?」

といったことは忘れてしまいがちなので、書いておく方がベターです。

「OK」ボタンを押すと新しい名前が追加されます。

「名前の管理」ダイアログですることはここまでなので、このまま閉じてOKです。「閉じる」ボタンか右角の×を押すと閉じることができます。

ここまでできたら、該当のセルに関数を入力します。

1ページ目の左角にあたるセルA1に「=INT(COLUMN() / 8)+1 & ” / ” & PageTotal」と入力します。

登場する関数の意味を解説していきます。

INT関数は、引数として指定した数値の整数部分を取り出す関数であり、

=INT(数値)

と入力します。

COLUMN関数は列番号を求める関数で引数は不要です。

数式でしていることは

「列番号を8で割った値の整数値に1を加算する」

といったところです。

 

各ページの左角の列番号=1,9,17,…となるので、数式は1,2,3,…を出力し、これに「& ” / ” & PageTotal」を加えることで、本題の「ページ番号 / 総ページ数」を書き出すことができます。

ENTERを押すと、1ページ目について目的を果たすことができました。

続いて2,3ページの当該セルにも数式をコピーし、完成です。

 

 

エクセルにてページ番号をセルに表示(挿入)させる方法2【マクロの使用】

次に、VBAマクロを使用して実現する方法を紹介します。

前例では「セルの幅はデフォルトのまま使用しなければならない」といった制約が付き、非常に大きな弱点といえます。

このような制約を取り払い、さらに柔軟に対応したいとなれば、マクロしかありません。

前例と同じく、各ページの左角に「ページ番号 / 総ページ数」を書き出すこと想定で解説します。

マクロを利用する準備として、VBE(Visual Basic Editor)を起動する必要があります。

キーボードで「Alt+F11」と同時押し、下記画面を開きます。

左側のツリーの「VBAProject…」を右クリックし、コンテキストメニューより「挿入」→「標準モジュール」を選択します。

「標準モジュール」-「Module1」をクリックし、エディタ画面を開きます。

そこへ下記コードを記述します。

Sub Work()

    Dim i As Integer

    Dim Num As Integer: Num = Sheet7.VPageBreaks.Count

    Range("A1") = Str(1) & "/" & Str(Num + 1)

    For i = 1 To Num

        Sheet7.VPageBreaks(i).Location.Value = Str(i + 1) & "/" & Str(Num + 1)

    Next

End Sub

 

コードの意味については下記の通りです。

Work:
マクロ名。エクセル側でこの名前が認識される。
Dim:
内部変数の宣言、本例ではループ用の「i」及びページ区切り線の本数に相当する「Num」が使用されている。
Range(***):
セル「***」を意味し、”A1”のように記述する。
For i =1 To N (処理) Next:
i=1からスタート、(処理)に記述したことがN回 実行される。
Sheet7:
処理を行う対象のシート。

*今回はSheet7で処理を行っている想定、どのシートが対象かは事前に確認が必要

VPageBreaks:
全てのページ区切り線を意味し、VPageBreaks(i)はi番目のページ区切り線を指す。

「.Count」に本数が「.Location」でページ区切り線のある列の先頭行のセルを指す。
「.Value=**」とすることでセルに値を書き込むことができる。

Str:
数値→文字列に変換する関数。

*今回は「*/*」形式で書くことを想定しており、これが日付ではないことを明確にするために使用している。

なお、先頭に書かれた「Option …」についてはVBEの設定により出てくるかどうかが変わりますが、あってもなくても動作に対して影響はありません。

また、「’」の後ろに書かれているのはコメントです。

書かなくても動作には影響がないですが、後々のメンテの際に困らないよう、書いておくことが無難です。

 

コードが書けたら、VBEを閉じて構いません。

シートに戻り、「Alt+F8」で開く下記ダイアログに上記で作成した「Work」があるかを確認します。

「Work」があることを確認できたら、選択状態にし、「実行」ボタンをクリックします。

これにより、今回の目的を達成することができます。

 

まとめ エクセルにてページ番号をセルに表示(挿入)させる方法

 この記事では「エクセルにてページ番号をセルに表示(挿入)させる方法」について解説しました。

普段している作業で「面倒だ」と感じる場面、非常に多いといえます。

しかし、エクセルにはそのような面倒な作業を手でしなくてもよくなる機能がたくさん用意されています。

面倒だと思っている作業があればそれを放置せず、「何か改善はできないか」を全力で考えましょう。

コメント

スポンサーリンク
タイトルとURLをコピーしました