エクセルでシート毎に日付を自動入力する方法(SHEET関数編)

エクセルでシート毎に日付を自動入力する方法(SHEET関数編) 自動入力

1シートが1日分になっている業務日報などで、一か月分の日付をそれぞれのシートにあわせて自動で入力する方法を紹介します。

これから紹介する方法は、エクセル2013から追加されたSHEET関数を使うので、エクセル2013、エクセル2016(Office365)が対象となります。

エクセル2010以前のバージョン(2010、2007、2003)を使っている人は、CELL関数を使うもう一つの方法を参考にしてください。

次の記事にCELL関数を使った方法を詳しく書いています。

エクセルでシート毎に日付を自動入力する方法(CELL関数編)
業務日報や営業日報などのように1シートが1日分になっているようなエクセルの場合、シートに自動で日付が入力されるようになったら便利ですよね。 例えば、2019年5月分の日報の場合、1シート目には「2019/05/01」、2シート目には「...

なお、これから紹介するSHEET関数を使った方法は、シート名には制限はありません。

つまり好きなシート名をつけることができます。

対して、CELL関数を使った方法ではシート名が1~31の固定になります。

都合のいい方にあわせて、SHEET関数またはCELL関数を使った方法を試してもらえればと思います。

SHEET関数を使って全シートに自動で日付を入力する方法

これから紹介する方法はエクセル2013以降が対象なので注意してください。

『日付を自動入力する方法』は、SHEET関数を使います。

SHEET関数はエクセル2013から追加された関数で、現在のシートが先頭から数えて何番目かというのを返すので、CELL関数を使うよりも関数式がシンプルになるというメリットがあります。

日付自動入力の前提条件

日付自動入力を使う場合に、事前に次の準備が必要です。

日付自動入力の前提条件

  • 日報のシートを一か月分用意する。(シート名は自由に決められる)
  • 『Sheet1』という名前の固定シートが必要。(開始日付入力用)

SHEET関数の方法はCELL関数を使った方法と違い、シート名は自由に決めることができます。

日報の全シートに日付が自動で入力できるようにする方法

日付自動入力の手順

では、SHEET関数を使って日付を自動入力する手順です。

まず、日報の開始日を入力します。

固定の『Sheet1』のA1セルに開始日付を入力。(例として2019/5/1を入力)

日報の全シートに日付が自動で入力できるようにする方法

 

次に、『Sheet1』以外のシートを全て選択します。

どのシートでもいいので、選択したら見出しのところで右クリックして『すべてのシートを選択』を選択。

日報の全シートに日付が自動で入力できるようにする方法

 

『Sheet1』も含めて全シート選択されるので、今度は『CTRL』を押しながら『Sheet1』シートをクリック。

これで、『Sheet1』は選択から外れるので、日報シートだけが選択された状態になります。

日報の全シートに日付が自動で入力できるようにする方法

 

日報シートの日付を自動入力させたいセルでダブルクリックし、関数式が入力できる状態にします。

SHEET関数を使って日付を自動入力させる

 

次の関数式を入力。

=DATE(YEAR(Sheet1!$A$1), MONTH(Sheet1!$A$1), SHEET() - 1)

SHEET関数を使って日付を自動入力させる

関数式を入力した時にたまに次のようなエラーが出る時がありますが、そのまま『はい』を押してください。問題なく入力されるはずです。

数式の入力でエラー

 

これで、全シートに日付が入力されました。

SHEET関数を使って日付を自動入力させる

上の画像のように最初のシートには開始日が入力され、次のシートにはその次の日付が入力されていることがわかると思います。

日付の自動入力の手順は以上です。

SHEET関数を使った場合の注意点

DATE関数は年、月、日を引数として受け取り、日付のシリアル値を返します。(要は日付が変えると思えばいいです)

SHEET関数を使った日付自動入力の関数式

SHEET関数は、対象のシートが先頭から何番目なのかを返す関数です。

例えば、5月1日のシートは先頭から2番めなので、このシートでSHEET()の関数を実行すると『2』が返ってきます。

先頭に『Sheet1』が余分にあるために、さらに-1をして1番めに調整。

ここまででわかるように、SHEET関数を使った方法はシートの順番がそのまま日付の『日』の部分に使われているのがポイントです。

このため、下の画像のようにシートの順番を変えるとシートと表示されている日付があわなくなるので、シートは移動しないようにしてください。

シートを移動させたくない場合は、次の『シートの移動や自動日付の変更をさせたくない場合は保護をかける』を参考にしてください。

ブックの保護によりシートの移動ができない

シートの移動や自動日付の変更をさせたくない場合は保護をかける

ここまで、自動で日付が入力できる方法を紹介しました。

でも、このままだと『Sheet1』の開始日付を誤って変更されたりすると、せっかく自動で入力できた日付がおかしくなります。

また、シート名の変更やシートの移動も同様です。

セルやシートに保護をかける方法を次の記事で詳しく解説しています。ぜひ参考にしてください。

開始日付が変更されないように『Sheet1』シートを隠す

セルの保護やシートの保護ができたら、念のために開始日付が変更されないように、『Sheet1』のシートを隠してみましょう。

手順は、『Sheet1』を選択し、右クリックメニューから『非表示』を選択するだけです。

開始日付が入力されているシートを隠す

 

このように、シートの見出しから『Sheet1』がなくなるので、間違っても開始日付が変更されることはありません。

開始日付が入力されているシートを隠す

なお、『Sheet1』を隠しても、日報の日付はちゃんと表示されます。

 

隠していたシートを復活させる場合は、適当なシートを選択して、右クリックメニュから『再表示』を選択します。

隠していたシートを再表示させる

まとめ

タイトル

  • SHEET関数を使った日付の自動入力は、各シートのシート名は固定にする必要はない。
  • ただし、シートの順番が大事なので移動されると日付の順番もおかしくなる。
  • でも、シートの移動をできなくする対策もある。(保護)

ここまでSHEET関数を使った『日付を自動で入力する方法』を紹介しました。

何度も書きますが、SHEET関数はエクセル2013から追加された関数なのでエクセル2010などでは使えません。

もし、エクセル2013、2016(Office365も含む)を使っているのであれば、シート名を自由に決められるSHEET関数の方法を使うようにしましょう。

入力する関数式もシンプルなので、手順通りに試したけどうまく動かないということもそんなにないと思いますよ^^