Introduction
Ver. all 2013 2016 2019 365
日付を年月日別々にドロップダウンリストで選んで入力する方法です。幾つかのパターンを紹介しますが、最後は月に応じて一覧に表示される日数が調整されるようにしてみます。
まず、「年」を一覧から選んで、
次に、「月」を一覧から選んで、
最後に「日」を選ぶと、
最終的な日付が別のセルに表示されるようにします。
日付の見た目は表示形式の知識が必要だにゃ
年月日を別々に指定して日付を表示する方法
最初に別のワークシートに一覧に表示したい年月日の一覧を作成します。
ここで作成するものが一覧のリストに表示されるようになります。
「年」「月」「日」それぞれ入力を別にするので、それぞれに対して準備が必要です。
まず、簡単に準備できる「年」と「月」の一覧を用意してみます。
別のワークシートに移動して、
今回は下のように作成してみました。
「年」に関しては、それほど多くの選択は必要ないかもしれないということで、5年分です。あまり多いと選択が面倒になりますから。
「月」は「12」まで必要ですね。
用意できたら、ここまで設定してしまいましょう。
元のワークシートに戻って、「年」の一覧を表示したいセルを選択、
[データ]タブ → [データの入力規則]をクリック。
拡大するとこんな感じ。
下の画面が表示されるので、[入力値の種類]の「v」をクリックして、
一覧から[リスト]を選びます。
下の[元の値]の場所をクリックして、
先ほど作成した日付の場所を選択します。
これで、「年」の場所はOK。設定が完了すると、対象のセルを選択すると右側にプルダウンの矢印があらわれます。
クリックすると、設定した一覧が表示されます。
同じように、「月」の場所も設定してしまいます。
方法は同じで設定範囲を変更するだけです。
できました。
ポイントはここから。
設定の方法が幾つか考えられるので、簡単なやり方から順に紹介します。
単純に日付を表示する方法
では、1番簡単な設定方法です。
日にちの選択は常に31日から選択するものとして、入力規則で設定してしまいます。
そして、その年月日を一つにまとめます。
必要な知識は、以下の2つです。
- セルや文字を結合するには「&」演算子を使用する
- 式の中で文字を使用する場合はその文字を「”」で囲む
ということで、「C6」に3つのセルを結合する式を入れてみます。
=B3&C3&D3
すると、下のように表示されます。
そのままセルを結合しただけなので、数字が繋がっただけ・・・。
間に「年月日」が欲しいですね。
ということで、式を下のように変更します。
=B3&”年”&C3&”月“&D3&”日”
追加した部分を赤文字にしています。
確定すると、下のように表示されます。
この方法が日付を表示するには簡単なのですが、問題もあります。
まず、日にちを選択する一覧が常に31日になってしまうこと。
やっぱり2月は28日など、月によって表示される日数が変更された方が恰好良いですね。
また、無理やり文字列として日付を表示しているので、本来のExcelで扱う日付形式ではありません。
そのため、表示形式で気軽に日付の見た目を変更したりすることもできません。
ということで、それらを解決する方法を続いて説明していきます。
表示した日付をシリアル値に変更する方法
表示した日付を、他の場所で使用する予定がある場合などは、先ほどのように無理やり文字列として表示するのではなく、日付のシリアル値に変更すべきです。
シリアル値とは、簡単に言うとExcelは「1900年1月1日」を「1」として日数を考えているということ。
「ん?意味が分からない」という方は、日付を扱う際には必ず必要な知識になるので、下のリンク先をご覧ください。
では、先ほどの式を変更します。
使用する関数はDATEVALUE関数。
DATEVALUE関数・・・文字列をシリアル値(日付)に変換する。
DATEVALUE(日付文字列)
- 日付文字列・・・(例)DATEVALUE(“2020/01/01”)
引数は日付を指定するだけなのですが、その日付は今回のように「年月日」や「/」や「-」で区切っている必要があります。
DATEVALUE関数について詳しく知りたい方は、下のリンク先をご覧ください。
今回は、先ほど年月日を区切りとして追加したので、作成した式をDATEVALUE関数で囲むだけです。
=DATEVALUE(B3&”年”&C3&”月”&D3&”日”)
追加したのは赤くした文字の場所だけです。確定すると日付のシリアル値が表示されます。
あとは、表示形式を変更すればOK。
[ホーム]タブ → [数値の書式]の「▼」をクリックして、
一覧から「短い日付形式」か「長い日付形式」を選びます。
それ以外の表示を設定したい場合は、一番下の[その他の表示形式]を選びましょう。
曜日を表示したりすることも可能です。
日付の表示形式について詳しく知りたい方は、先ほども紹介した下のリンク先をご覧ください。
今回は、短い日付形式にしてみました。
これで、この場所はDATE関数など、他の日付関数でも使用できるようになりました。
日数が月に応じて変更されるようにする方法
ここまできて、気になるのはやはり日にちの選択が常に31日になってしまうこと。
これを変更するのは少し面倒です。
入力規則機能で指定したセル範囲の数値が、入力された月に応じて自動的に変更されなければならないからです。
ではやってみます。
入力された「年」と「月」を利用して、対応した正確な日付を表示するようにしてしまいます。
先ほど紹介したDATEVALUE関数を使用します。
日付一覧を作成する最初のセルを選択したら、[関数の挿入]ボタンをクリック。
[関数の挿入]ダイアログボックスが表示されます。
[関数の分類]を[日付/時刻]に切り替えて、[DATEVALUE]を選択して[OK]をクリック。
DATEVALUE関数・・・文字列をシリアル値(日付)に変換する。
DATEVALUE(日付文字列)
- 日付文字列・・・(例)DATEVALUE(“2020/01/01”)
今回は、下のように引数を入力します。
=DATEVALUE(Sheet1!B3&”/”&Sheet1!C3&”/”&1)
「年」と「月」は、入力されたセルを参照して、
「日」は最初の日なので「1」を入力。
それらを「&」で繋ぎます。
また、年月日の間に日付として「/」を使用し、その文字を「”」で囲みます。
結果は下のように日付のシリアル値が表示されます。
これを日付の表示形式に変更します。
[ホーム]タブ → [数値の書式]の「▼」をクリックして、
一覧から「その他の表示形式」を選びます。
表示された画面で、左側で[ユーザー定義]を選び、右側の[種類]の場所に「d」と入力します。
「d」は日付の中で日にちだけを表示する表示形式です。
[OK]をクリックすると1日の「1」が表示されます。
ここで指定した表示形式が日付の選択の一覧に表示される見た目になります。
次に、すぐ下のセルに
=C2+1
の式を入力して、
その式をオートフィル機能を使用して「28」の数字まで下にコピーします。
※29日以降は、日付によって変化するように設定します。
では、「29日」となるセルを選択して(今回の場合は「C30」)、
次の式を入力します。
=IF(OR(C29=””,EOMONTH(C2,0)=C29),“”,C29+1)
この式を言葉で説明すると、
もし、すぐ上のセルが空欄、もしくは今月末日と同じ日付であれば、空欄にする。
違う場合は、1日増やす。
という感じです。式の内容によって文字色を変えてみました。
式内で使用するEOMONTH関数については下で説明しています。簡単に言うと、指定したセルの月末日を返す関数です。
後は、この式を「31日」の場所つまり2つ下のセルまでコピーすれば完了。
日付に応じて、「28」から「31」まで表示が変化してくれます。
後は、日付を選択するセルに、今作成した「1」~「31」までのセルを入力規則の範囲に指定してあげるだけです。
設定後、「月」を2月にして日付を選んでみると、「28」まで表示されていないことが確認できます。
適当に日付を選ぶと・・・。シリアル値が表示されてしまいます。
ということで、日付の表示形式に変更しましょう。
[ユーザー定義]で[種類]に「d」を入力です。
これで、年月日一覧の選択に関しては終了しました。
最後に結果を「日付」の場所に表示するだけ。
これは簡単です。すでに日付の「D3」には指定した日付が完成しています。見た目が日にちになっているだけ。
ということで、その「D3」の結果をそのまま日付「C7」に表示します。
式は単純。
=D3
を入力。これだけです。
「日」と同じ結果が表示されるので、
表示形式を変更しましょう。
様々な日付の表示形式から適切なものを選択もしくは作成します。
例えば、下のように設定すると、
曜日まで表示できますよ。
説明が長くなりましたが、一度設定すると便利に使用できますね。
まとめ
準備だけすれば便利な日付入力ですが、その準備に様々な知識が必要になります。
シリアル値や表示形式、日付に関する関数など・・・・。
途中で紹介した説明のリンク先をまとめておきます。
状況に応じて必要な知識も異なるにゃ