Excelの日付データには、年/月/日の情報がまとめて記録されている。ただし、このままでは使いづらいため、日付データから年/月/日だけを個別に取り出したい場合もあるだろう。このような場合は、YEAR、MONTH、DAYといった関数が活用できる。さらに、時/分/秒だけを取り出す関数HOUR、MINUTE、SECONDの使い方も覚えておくとよい。
並べ替えでは解決できない問題
Excelには、日付データから年/月/日だけを取り出す関数として、YEAR、MONTH、DAYといった関数が用意されている。簡単に使える関数なので、この機会にその活用方法を覚えておくとよいだろう。
ここでは、来月(4月)に誕生日を迎える会員に向けて「お誕生月だけの特別クーポン」を配布する場合を例にして関数の使い方を紹介していこう。こういった作業を行うには、その前準備として「誕生日が4月の会員」だけをピックアップし、リスト化しておく必要がある。
会員情報を管理するExcelファイルには各個人の「生年月日」が記録されている。このデータを使えば「誕生日が4月の会員」をピックアップできるはずだ。その具体的な手順を探っていこう。
まずは、「生年月日」の昇順にデータを並べ替えた例を紹介しておこう。「生年月日」の列にあるセルを1つだけ選択し、「昇順」コマンドをクリックする。
すると、「生年月日」の日付が古い順にデータが並べ替えられ、以下の図のような結果が得られる。
この場合、並べ替えの優先順位は「年」→「月」→「日」になるため、「年齢の順」に会員データが並べ替えれることになる。よって、この状態では「誕生日が4月の会員」だけを効率よくピックアップすることはできない。結局のところ、データを1件ずつ確認しながら「誕生日が4月の会員」だけを手作業でピックアップすることになり、気が遠くなるような作業を強いられてしまう。
「60歳以上の会員」だけにクーポンを配布する、といった場合なら「並べ替え」を有効活用することも不可能ではないが、「誕生日が4月の会員」だけをピックアップする場合は別の方法を考えなければならない。
関数MONTHで日付データから「月」だけを数値として取得
このような場合に活用できるのが、「日付データ」から年/月/日の数値だけを取り出してくれる関数だ。たとえば、日付データから「月」の数値だけを取り出したい場合は、関数MONTHを利用するとよい。
■関数MONTHの書式
=MONTH(日付データ)
その手順を具体的に紹介していこう。まずは、「誕生月」の列を表に挿入する。なお、この列には「標準」の表示形式と「中央揃え」を指定してある。
続いて、関数MONTHを入力する。関数MONTHの引数は1つしかなく、カッコ内で「日付データが入力されているセル」を参照するだけで関数の記述は完了する。
「Enter」キーを押して結果を見ると、「1989/10/14」の日付データから「月」の部分に該当する「10」だけが数値データとして取り出されるのを確認できる。
あとは、この関数を他のセルにコピーするだけ。これで全会員の「誕生月」を数値データとして取り出すことが可能となる。なお、データ数が多く、オートフィルで関数をコピーするのが大変な場合は、前回の連載で紹介した手法を使って関数をコピーするとよい。この方法を使えば、ほんの数秒でコピー作業を完了できるはずだ。
これで全員の「誕生月」を数値データとして取り出すことができた。以降の処理は「関数の使い方」ではなく、Excelの一般的な作業手順になる。簡単に紹介しておこう。
「誕生日が4月の会員」だけをピックアップする方法は何通りか考えられる。最も簡単なのは「誕生月」を基準にデータを並べ替える方法だ。「誕生月」の列にあるセルを1つだけ選択し、「昇順」コマンドをクリックする。
すると、「誕生日が1月の会員」→「誕生日が2月の会員」→「誕生日が3月の会員」・・・という具合に、データを「誕生月」で並べ変えた表になる。あとは、この表を「誕生日」が4の部分までスクロールしていくだけだ。
「お誕生月だけの特別クーポン」をメールで配布するのであれば、「誕生月」が4の会員の「メールアドレス」をまとめてコピーし、メールの自動送信アプリなどに貼り付けて利用すればよい。
そのほか、フィルター機能を使って「誕生日が4月の会員」だけをピックアップする方法も考えられる。フィルターの使い方を知っているのであれば、こちらの方がスムーズに作業を進められるだろう。
「誕生月が4に等しい」を条件にデータを抽出すると、以下の図のような結果が得られる。あとは、G列にある「メールアドレスのセル範囲」を選択して、メールの自動送信アプリなどにコピー&ペーストするだけ。これで「誕生日が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回も一読しておくとよいだろう。シリアル値の理解を深める話として参考になるはずだ。