Excelの日付データには、年/月/日の情報がまとめて記録されている。ただし、このままでは使いづらいため、日付データから年/月/日だけを個別に取り出したい場合もあるだろう。このような場合は、YEAR、MONTH、DAYといった関数が活用できる。さらに、時/分/秒だけを取り出す関数HOUR、MINUTE、SECONDの使い方も覚えておくとよい。

並べ替えでは解決できない問題

Excelには、日付データから年/月/日だけを取り出す関数として、YEAR、MONTH、DAYといった関数が用意されている。簡単に使える関数なので、この機会にその活用方法を覚えておくとよいだろう。

  • 日付データから年/月/日だけを取り出す関数YEAR/MONTH/DAY

ここでは、来月(4月)に誕生日を迎える会員に向けて「お誕生月だけの特別クーポン」を配布する場合を例にして関数の使い方を紹介していこう。こういった作業を行うには、その前準備として「誕生日が4月の会員」だけをピックアップし、リスト化しておく必要がある。

会員情報を管理するExcelファイルには各個人の「生年月日」が記録されている。このデータを使えば「誕生日が4月の会員」をピックアップできるはずだ。その具体的な手順を探っていこう。

  • 会員名簿のリスト

まずは、「生年月日」の昇順にデータを並べ替えた例を紹介しておこう。「生年月日」の列にあるセルを1つだけ選択し、「昇順」コマンドをクリックする。

  • 「生年月日」の昇順に並べ替え

すると、「生年月日」の日付が古い順にデータが並べ替えられ、以下の図のような結果が得られる。

  • 「生年月日」の昇順に並べ替えたリスト

この場合、並べ替えの優先順位は「年」→「月」→「日」になるため、「年齢の順」に会員データが並べ替えれることになる。よって、この状態では「誕生日が4月の会員」だけを効率よくピックアップすることはできない。結局のところ、データを1件ずつ確認しながら「誕生日が4月の会員」だけを手作業でピックアップすることになり、気が遠くなるような作業を強いられてしまう。

「60歳以上の会員」だけにクーポンを配布する、といった場合なら「並べ替え」を有効活用することも不可能ではないが、「誕生日が4月の会員」だけをピックアップする場合は別の方法を考えなければならない。

関数MONTHで日付データから「月」だけを数値として取得

このような場合に活用できるのが、「日付データ」から年/月/日の数値だけを取り出してくれる関数だ。たとえば、日付データから「月」の数値だけを取り出したい場合は、関数MONTHを利用するとよい。

■関数MONTHの書式
 =MONTH(日付データ)

その手順を具体的に紹介していこう。まずは、「誕生月」の列を表に挿入する。なお、この列には「標準」の表示形式と「中央揃え」を指定してある。

  • 「誕生月」の列を準備

続いて、関数MONTHを入力する。関数MONTHの引数は1つしかなく、カッコ内で「日付データが入力されているセル」を参照するだけで関数の記述は完了する。

  • 関数MONTHの入力

「Enter」キーを押して結果を見ると、「1989/10/14」の日付データから「月」の部分に該当する「10」だけが数値データとして取り出されるのを確認できる。

  • 関数MONTHにより取得された「月」の数値データ

あとは、この関数を他のセルにコピーするだけ。これで全会員の「誕生月」を数値データとして取り出すことが可能となる。なお、データ数が多く、オートフィルで関数をコピーするのが大変な場合は、前回の連載で紹介した手法を使って関数をコピーするとよい。この方法を使えば、ほんの数秒でコピー作業を完了できるはずだ。

  • 関数MONTHをコピーした様子

これで全員の「誕生月」を数値データとして取り出すことができた。以降の処理は「関数の使い方」ではなく、Excelの一般的な作業手順になる。簡単に紹介しておこう。

「誕生日が4月の会員」だけをピックアップする方法は何通りか考えられる。最も簡単なのは「誕生月」を基準にデータを並べ替える方法だ。「誕生月」の列にあるセルを1つだけ選択し、「昇順」コマンドをクリックする。

  • 「誕生月」の昇順で並べ替え

すると、「誕生日が1月の会員」→「誕生日が2月の会員」→「誕生日が3月の会員」・・・という具合に、データを「誕生月」で並べ変えた表になる。あとは、この表を「誕生日」が4の部分までスクロールしていくだけだ。

  • 「誕生月」が4月の会員

「お誕生月だけの特別クーポン」をメールで配布するのであれば、「誕生月」が4の会員の「メールアドレス」をまとめてコピーし、メールの自動送信アプリなどに貼り付けて利用すればよい。

そのほか、フィルター機能を使って「誕生日が4月の会員」だけをピックアップする方法も考えられる。フィルターの使い方を知っているのであれば、こちらの方がスムーズに作業を進められるだろう。

  • フィルターを使って「誕生月」が4月のデータだけを抽出

「誕生月が4に等しい」を条件にデータを抽出すると、以下の図のような結果が得られる。あとは、G列にある「メールアドレスのセル範囲」を選択して、メールの自動送信アプリなどにコピー&ペーストするだけ。これで「誕生日が4月の会員」だけに特別クーポンを送信することができる。

  • 「誕生月」が4月の会員

このように関数MONTHを使うと、「日付データ」から「月」の数値だけを取り出して、さまざまな処理を施すことが可能となる。誰でも手軽に使える関数なので、「こういった関数がある」ということを知っておくだけでも十分に役に立つだろう。

日時データから年/月/日/時/分/秒を取り出す関数

Excelには、日時データから年/月/日/時/分/秒を取り出す関数として、以下のような関数が用意されている。関数MONTHとあわせて覚えておくとよい。

YEAR() ・・・・ 「年」だけを取り出す
MONTH() ・・・ 「月」だけを取り出す
DAY() ・・・・ 「日」だけを取り出す

HOUR() ・・・・ 「時」だけを取り出す
MINUTE() ・・・ 「分」だけを取り出す
SECOND() ・・・ 「秒」だけを取り出す

いずれも、カッコ内に「日付データ」や「時刻データ」を指定するだけで利用できる関数となる。簡単な例を図で紹介しておこう。

  • 各関数が返す値

上の図は、各列の3行目にある「日付データ」や「時刻データ」から関数で年/月/日/時/分/秒を取り出した例だ。それぞれの結果を見ると、各関数の機能を把握できるだろう。

念のため、補足しておこう。「日付」と「時刻」の両方が入力されているデータは、年/月/日/時/分/秒がそのまま数値として取得される。

「日付」だけが入力されているデータは、0時0分0秒の日時データとして処理されるため、関数HOUR、MINUTE、SECONDの結果は0(ゼロ)になる。

「時刻」だけが入力されているデータは、1900年1月0日の日時データとして処理されるため、関数YEARは「1900」、関数MONTHは「1」、関数DAYは「0」という結果になる。

シリアル値の仕組みを十分に理解していれば、これらは当然の結果と考えられるはずだ。よく分からない方は、本連載の第10回も一読しておくとよいだろう。シリアル値の理解を深める話として参考になるはずだ。