Introduction
Ver. all 2013 2016 2019 365
日付をリスト一覧から選んで入力できるようにする方法です。
入力規則のリスト機能を使用します。
別のワークシートに日付の準備が必要ですが、それほど大変ではありませんよ。
データ入力が楽になるにゃ。
日付を一覧から入力する設定
最初に別のワークシートに一覧に表示したい日付の一覧を作成します。
ここで作成する日付が一覧のリストに表示されるようになるのですが、その日付の表示を工夫することで様々なバリエーションが可能になります。
例として、以下の3つのパターンを後半で説明しています。
- 当日から~〇日後までを表示する
- 月の末日から表示する
- 月ごとに対応した日付を自動で表示する
最初は月ごとの日付を別々に作成しておく方法で説明を進めます。
新しいワークシートに移動したら、
必要な月の日付を入力しましょう。
日付は間に「/」か「-」を入力して入力します。
また、一覧の表示に「日にち」だけ必要だった場合も「年」から入力しましょう。
入力したら、オートフィル機能を使用してひと月分だけ下にコピーします。
途中で「#」が表示されたら列の幅が足りないということ。列幅を広げましょう。
下のような感じで準備できたら、日付を表示したいワークシートに戻ります。
今回は、下の「B3」の場所に日付入力の一覧を表示したいと思います。
対象のセルを選択したら、[データ]タブ → [データの入力規則]をクリック。
拡大するとこんな感じ。
下の画面が表示されるので、[入力値の種類]の「v」をクリックして、
一覧から[リスト]を選びます。
下の[元の値]の場所をクリックして、
先ほど作成した日付の場所を選択します。
この場所で指定した範囲がリストの一覧に表示されることになります。
[OK]をクリックすると、セルの右側にドロップダウンの「▼」が表示されます。
「▼」をクリックすると、ちゃんと日付の一覧が表示されます。
選んでみると・・・。
あれ?日付ではなく数字が表示された・・・。
これは、Excelは日付を「シリアル値」で考えているからです。
「ん?意味が分からない」という方は、日付を扱う際には必ず必要な知識になるので、下のリンク先をご覧ください。
では、表示形式を「日付形式」に変更することで対応しましょう。
[ホーム]タブ → [数値の書式]の「▼」をクリックして、
一覧から「短い日付形式」か「長い日付形式」を選びます。
それ以外の表示を設定したい場合は、一番下の[その他の表示形式]を選びましょう。
今回は、[長い日付形式]を選んでみました。
数値が日付表示に変わりました。
[その他の表示形式]を選ぶことで日付の表示を自由に設定することが可能になります。
詳しくは先ほども紹介した下のリンク先をご覧ください。
また、選ぶリスト一覧の日付の表示を変更するには、元のリストの表示形式を変更します。
例えば、ユーザー定義で「yyyy/m/d(aaa)」と指定して、下のように曜日を表示するようにすれば、
選ぶ一覧にも曜日が表示されるようになります。
こちらの方法の欠点は、月ごとの日付をそれぞれ用意して、指定範囲も月ごとに変更する必要があることです。
自動で月ごとに日付が変わるようにするには、ちょっと工夫が必要です。このページの最後で説明しています。
当日から〇〇日後までを選択できるようにする方法
基本的な設定方法は、ここまでの説明で終わりなのですが、ここからは一覧に表示される日付の設定について説明していきます。
まずは、当日から~日後までを表示する方法です。
リスト一覧に1日から31日まで表示されると、後半の日付を選ぶのがちょっと大変ですね。
例えば、入力する日付が、当日から1週間以内と決まっているならば、その7日間だけ一覧に表示したいところです。
入力規則を設定する範囲を1週間だけにすれば解決するのですが、日付が変わるたびに範囲を変更するのも面倒です。
「当日を基準として1週間」
であれば、「TODAY関数」を使用することで解決することができますよ。
今回は、当日から5日間で設定してみます。
別ワークシートの日付の表示方法を変更するだけです。
日付の最初の場所で「TODAY関数」を使用します。
当日の日付を入力するセルを選択したら、[関数の挿入]ボタンをクリック。
[関数の分類]を[日付/時刻]に切り替えて、[TODAY]を選択して[OK]をクリック。
下の画面が表示されますが、気にせず[OK]をクリック。
TODAY関数は引数(括弧の中身)を必要としないので、すぐに日付が表示されます。
この日付はExcelブックを開くごとに当日の日付に切り替わってくれます。
「TODAY関数」について詳しく知りたい方は下のリンク先をご覧ください。
今回は、そのまま式を下にコピーしません。
すぐ下のセルに、前の日付に1を足す式を入力します。
今回の場合は、「=A1+1」となります。
これで、次の日が表示されます。
後は必要な日数分だけこの式をオートフィル機能を使用してコピーします。
今回は5日分。
この範囲を入力規則の範囲として指定すれば、下のように当日を基準とした日付を入力できるようになります。
他の例としては、下のように「1を減算する式」を入力することで、当日を基準とした過去の日数を入力できるようにすることもできますね。
月末から選べるようにする方法
日付を1日からではなく31日や30日からのように末日から選べるようにしたい時の方法です。
当日を表示する「TODAY関数」と、当月末を表示する「EOMONTH関数」を使用します。
月末日を入力するセルを選択したら、[関数の挿入]ボタンをクリック。
[関数の分類]を[日付/時刻]に切り替えて、[EOMONTH]を選択して[OK]をクリック。
EOMONTH関数・・・開始日から、指定した月数の最終日を表示する(シリアル値を返す)
EOMONTH(開始日,月)
- 開始日・・・期間の最初の日付(開始日)を指定
- 月・・・[開始日]からの月数を指定
- 正の数・・・[開始日]より後の月の最終日を返す
- 負の数・・・[開始日]より前の月の最終日を返す
今回は、
- [開始日]・・・「today()」
- [月]・・・「0」
と入力します。
「開始日」はTODAY関数を使用して、当日を指定するようにして、「月」は「0」を指定することで当月になります。
「EOMONTH関数」について詳しく知りたい方は、下のリンク先をご覧ください。
完成する関数は
=EOMONTH(TODAY(),0)
[OK]をクリックすると、当月の末日が表示されます。
続いて、すぐ下のセルに、前の日付を1減算する式を入力します。
今回の場合は、「=A1-1」となります。
その式を下にコピーすれば完成。
この範囲を入力規則の範囲として指定すれば、下のように当月の末日からスタートする日付を入力できるようになります。
月が自動で変わるようにする方法
入力規則機能は、指定した範囲をリスト一覧に表示します。
月に応じた日付リストを表示するためには、指定する範囲の日付が自動でその月の表示に切り替わるような設定が必要になります。
少し設定が複雑になります。
まず、コンピュータの時計を元に、当月1日の日付を「DATE関数」を使用して表示します。
当月1日を入力するセルを選択したら、[関数の挿入]ボタンをクリック。
[関数の分類]を[日付/時刻]に切り替えて、[DATE]を選択して[OK]をクリック。
「年」「月」「日」とそれぞれ指定するだけなので分かりやすい関数です。
DATE関数・・・指定された日付を返す関数
DATE(年,月,日)
- 年・・・年を指定
- 月・・・月を指定
- 日・・・日を指定
今回は、下のように引数を入力します。
- 年・・・TODAY関数で当日の日付を取得し、YEAR関数で年を抜き出す
- 月・・・TODAY関数で当日の日付を取得し、MONTH関数で月を抜き出す
- 日・・・「1」と入力し、1日にする
「DATE関数」について詳しく知りたい方は、下のリンク先をご覧ください。
作成する関数は下のようになります。
=DATE(YEAR(TODAY()),MONTH(TODAY()), 1)
[OK]をクリックすると、コンピュータの時計を参照して、その月の1日が表示されます。
すぐ下のセルに、前の日付に1を足す式を入力します。
今回の場合は、「=A1+1」となります。
2日が表示されたら、その式を下にコピーします。
31日までコピーしたいところですが、28日でストップしましょう。
28日や29日で終わる可能性のある2月のことを考える必要があります。
また、30日と31日も正確に表示してくれないと困りますね。
ということで、「29日」のセルには下の式を入力します。
=IF(OR(A28=””,EOMONTH(A1,0)=A28),””,A28+1)
簡単に意味を説明すると、
=IF(OR(A28=””,EOMONTH(A1,0)=A28),“”,A28+1)
もし、すぐ上のセルが空欄、もしくは今月末日と同じ日付であれば、空欄にする。
違う場合は、1日増やす。
という感じです。
部分ごとに色を変えてみたので、ゆっくり眺めてください。
実際に式を入力する際は、IF関数の引数入力画面を表示してから、下のように直接手入力するとミスをしにくいと思います。
※1番上の[論理式]は長くなるので画面からはみ出ています
後は、作成した式を2セル下までコピーして完成です。
このように日付を作成しておけば、2月の時はちゃんと28日で止まってくれます。
※うるう年は29日になります
まとめ
準備だけすれば便利な日付入力ですが、その準備に様々な知識が必要になります。
シリアル値や表示形式、日付に関する関数など・・・・。
途中で紹介した説明のリンク先をまとめておきます。
うまく表示できると気持ちが良いにゃ