目次
このチュートリアルでは、ExcelのMONTH関数とEOMONTH関数の基本を説明します。 Excelの日付から月を抽出する方法、月の最初と最後の日を取得する方法、月名を数字に変換する方法など、さまざまな数式例を紹介します。
前回は、平日を計算するための様々な数式を探りましたが、今回はより大きな時間単位で操作し、Microsoft Excelが提供する月に関する関数を学びます。
このチュートリアルでは、次のことを学びます。
ExcelのMONTH関数 - 構文と使い方
Microsoft Excelには、日付から月を抽出するための特別なMONTH関数があり、1(1月)から12(12月)までの月番号を返します。
MONTH関数は、Excel2016~2000のすべてのバージョンで使用でき、その構文は可能な限りシンプルです。
MONTH(シリアルナンバー) どこ シリアルナンバー
は、検索しようとしている月の有効な日付です。
Excel の MONTH 数式を正しく動作させるには、DATE(年、月、日) 関数を使用して日付を入力する必要があります。 たとえば、次のような数式があります。 =MONTH(DATE(2015,3,1))
は、DATEが2015年3月1日を表すので、3が返される。
などの式があります。 =MONTH("1-Mar-2015")です。
ただし、日付がテキストで入力されている場合、より複雑なシナリオでは問題が発生する可能性があります。
実際には、MONTH関数内で日付を指定するのではなく、日付のあるセルを参照するか、他の関数が返す日付を指定する方が便利です。 例えば、以下のような感じです。
=MONTH(A1)
- 関数は、セル A1 にある日付の月を返します。
=月(今日())
- 関数は、現在の月数を返します。
一見、地味に見えるExcelのMONTH関数ですが、以下の例を見てみると、実はとても便利なことがたくさんあることに気づかされます。
Excelで日付から月番号を取得する方法
Excelで日付から月を取得する方法はいくつかありますが、どの方法を選択するかは、まさにあなたが達成しようとしている結果に依存します。
ExcelのMONTH関数 - 日付から月番号を取得する
これは、Excelで日付を月に変換する最もわかりやすく簡単な方法です。 例えば、以下のような感じです。
=MONTH(A2)
- 関数は、セル A2 にある日付の月を返します。=MONTH(DATE(2015,4,15))
- は4月に対応する4を返します。=MONTH("15-Apr-2015")
- は当然、4番も返します。
ExcelのTEXT関数 - 月をテキスト文字列として抽出する
Excelの日付から月番号を取得する方法として、TEXT関数を使用する方法もあります。
=TEXT(A2, "m")
- 関数は、先頭の0を除いた月番号を1〜12のように返します。=TEXT(A2, "mm")
- は,先頭の0を含む月番号を01〜12で返します。
TEXT関数は、月の数値を文字列として返すので、TEXT関数を使う場合は、注意が必要です。
次のスクリーンショットは、上記のすべての計算式が返す結果を示しています。 TEXT関数が返すテキスト値(セルC4とC5)が左寄せであるのに対して、MONTH関数が返す数値(セルC2とC3)が右寄せであることに注目してください。
Excelで日付から月名を抽出する方法
数字ではなく月名を取得したい場合は、再度TEXT機能を使用し、日付コードを変えて取得します。
=TEXT(A2, "mmm")
- は、Jan - Dec のような省略形の月名を返します。=TEXT(A2, "mmmm")
- は、1月〜12月のような完全な月名を返します。
Excelのワークシートで実際に日付を月に変換する必要がない場合は、次のようにします。 月名表示 のみであれば、数式は必要ありません。
日付のあるセルを選択し、Ctrl+1 キーを押して、日付のあるセルをオ ペンドします。 セルのフォーマット ダイアログで 番号 タブで、以下を選択します。 カスタム に "mmm "または "mmmm "のどちらかを入力してください。 タイプ この場合、入力した内容は、計算やその他の数式で使用できるExcelの日付として機能します。 日付形式の変更について詳しくは、「Excelでカスタム日付形式を作成する」を参照してください。
Excelで月番号を月名に変換する方法
Excelのワークシートに1から12までの数字のリストがあり、それを月の名前に変換したいとします。 そのためには、次のいずれかの数式を使用します。
省略形の月名(1月~12月)を返す場合。
=TEXT(A2*28, "mmm")
=TEXT(DATE(2015, A2, 1), "mmm")
完全な月名(1月~12月)を返す場合。
=TEXT(A2*28, "mmmm")
=TEXT(DATE(2015, A2, 1), "mmmm")
上記のすべての数式において、A2は月番号を持つセルです。 そして、数式間の実質的な違いは月コードのみです。
- 「mmm" - Jan - Decのような3文字の月の略語
- "mmmm" - 月が完全にスペルアウトされます。
- "mmmmm" - 月名の最初の文字
これらの計算式の仕組み
mmm」や「mmm」といった月の書式コードと一緒に使うと、Excelは数字の1を1900年1月の1日と見なし、1、2、3などを28倍すると、1900年の28、56、84日目、つまり1、2、3月などになります。 書式コードの「mmm」「mmm」では、月名だけを表示します。
Excelで月名を数字に変換する方法
月名を数字に変換するExcelの関数には、DATEVALUEとMONTHがあります。 ExcelのDATEVALUE関数は、テキストとして保存されている日付をMicrosoft Excelが日付として認識する通し番号に変換します。 そして、MONTH関数はその日付から月番号を抽出するのです。
完全な計算式は以下の通りです。
=MONTH(DATEVALUE(A2 & "1"))
A2は数字に変換したい月名の入ったセルです(DATEVALUE関数が日付と理解するために& "1 "を追加しています)。
エクセルで月の最終日を取得する方法(EOMONTH関数)
ExcelのEOMONTH関数は、指定した開始日を基準にして、その月の最終日を返すために使用します。 以下の引数があり、いずれも必須です。
EOMONTH(start_date,month)です。- 開始日 - 開始日、または開始日のあるセルへの参照。
- 月数 - 将来の日付には正の値、過去の日付には負の値を使用します。
ここでは、EOMONTH式の例をいくつか紹介します。
=eomonth(a2, 1)
- は、セル A2 の日付から 1 ヶ月後の月の最終日を返します。
=eomonth(a2, -1)
- は、セル A2 の日付の 1 ヶ月前の月の最終日を返します。
セルリファレンスの代わりに、EOMONTH式に日付をハードコードすることができます。 たとえば、以下の2つの式はいずれも4月の最終日を返します。
=EOMONTH("15-Apr-2015",0)です。
=eomonth(date(2015,4,15), 0)
を返すこと。 じんじつ で、EOMONTH式の第1引数にTODAY()関数を使って、今日の日付が開始日となるようにします。 そして、その第1引数に0を入れます。 つき
の議論は、どちらにしても月を変えたくないからです。
=eomonth(today(), 0)
ExcelのEOMONTH関数は日付を表す通し番号を返すので、数式でセルに日付書式を適用する必要があります。 詳しい手順は、Excelで日付書式を変更する方法をご覧ください。
そして、前述したExcelのEOMONTHの計算式が返す結果がこちらです。
当月末まであと何日あるかを計算したい場合は、EOMONTHで返される日付からTODAY()で返される日付を引き、一般書式をセルに適用すればよい。
=eomonth(today(), 0)-today()
Excelで月の初日を見つける方法
ご存知のように、Microsoft Excelには、月の最終日を返す関数(EOMONTH)が1つだけ用意されています。 月の初日に関しては、取得する方法は1つだけではありません。
例1.月番号で月の1日目を取得する
月番号がある場合は、次のような簡単なDATE式で計算します。
=DATE( 年 , 月番 , 1)例えば、=DATE(2015, 4, 1)とすると、1-Apr-15が返されます。
数値が特定の列、例えばA列にある場合、数式内に直接セル参照を追加することができます。
=date(2015, b2, 1)
例2.日付から月の初日を取得する
日付をもとに月の初日を計算したい場合は、再びExcelのDATE関数を使いますが、今回は月番号を抽出するためのMONTH関数も必要です。
=DATE( 年 , 月( 日付のあるセル ), 1)例えば、次の数式は、セルA2の日付に基づいて月の初日を返します。
=DATE(2015,MONTH(A2),1)
例3.現在の日付から月の初日を探す
今日の日付で計算する場合は、Excelのリエゾンを使用します。 イーモンテ とTODAY機能。
=eomonth(today(),0) +1
- は、翌月1日に返送されます。
すでにEOMONTHの式で当月末日を求めましたが、これに1を加えれば翌月初日を求めることができます。
同様に、前月と当月の初日を取得することができます。
=eomonth(today(),-2) +1
- は、前月の 1 日を返します。
=eomonth(today(),-1) +1
- 関数は、当月の 1 日を返します。
また、エクセル 日付 を使えば、少し長い数式になりますが、このタスクを処理することができます。 例えば、次の数式は何をすると思いますか?
=date(year(today()), month(today()), 1)
はい、当月の初日を返します。
また、強制的に翌月または前月の初日を返すようにするにはどうすればよいのでしょうか? ハンズダウン :) 現在の月に1加算または減算すればよいのです。
翌月1日に返却すること。
=date(year(today()), month(today())+1, 1)
前月の1日に戻す場合。
=date(year(today()), month(today())-1, 1)
月の日数の計算方法
Microsoft Excelには、日付や時刻を扱うさまざまな関数がありますが、月の日数を計算する関数がありません。 そこで、独自の計算式でその欠落を補う必要があります。
例1.月番号をもとに日数を取得する場合
月番号がわかっている場合は、次の DAY / DATE 式でその月の日数が返されます。
=DAY(DATE( 年 , 月番 + 1, 1) -1)上の式では、DATE関数が翌月の初日を返し、そこから1を引いて希望の月の最終日を得ています。 そして、DAY関数がその日付を日数に変換しているのです。
例えば、次の式は4月(1年のうち4ヶ月目)の日数を返します。
=day(date(2015, 4 +1, 1) -1)
例2.日付から月の日数を求める場合
月番号はわからないが、その月内の日付はある、という場合は、YEAR関数とMONTH関数を使って、日付から年号と月番号を取り出すことができます。 上記の例で説明したDAY / DATE式にこれらを埋め込めば、ある月が何日あるかが分かります。
=day(日付(年(a2)、月(a2)+1、1)-1)
A2は日付の入ったセルです。
ExcelのEOMONTH関数は、月の最終日を返すので、追加の計算は必要ありません。
=day(eomonth(a1, 0))
次のスクリーンショットは、すべての計算式が返す結果を示しており、ご覧のとおり、それらは同一です。
Excelで月別にデータを合計する方法
たくさんのデータがある大きなテーブルでは、ある月の値の合計を求めることがよくあります。 そして、これはデータが時系列で入力されていない場合に問題となることがあります。
最も簡単な方法は、日付を月数に変換する簡単なExcelのMONTH式でヘルパー列を追加することです。 例えば、日付が列Aにある場合、=MONTH(A2)を使用します。
そして今度は、空の列に数字のリスト(1~12まで、または興味のある月番号のみ)を書き出し、次のようなSUMIF式で各月の値を合計します。
=sumif(c2:c15, e2, b2:b15)
ここで、E2 は月番号である。
次の画面は、計算結果を示したものです。
もし、Excelシートにヘルパー列を追加したくない場合は、問題ありません。 もう少しトリッキーなSUMPRODUCT関数を使用すれば、うまくいきます。
=sumproduct((月($a$2:$a$15)=$e2) * ($b$2:$b$15))
ここで、A列には日付、B列には合計する値、E2には月番号が含まれる。
注:上記のいずれの方法も、年に関係なく、ある月のすべての値を合計することに留意してください。 したがって、Excelワークシートに数年分のデータが含まれている場合は、すべてのデータが合計されます。
月を基準にした日付の条件付き書式を設定するには
ExcelのMONTH関数とEOMONTH関数を使ってワークシートで様々な計算をする方法がわかったところで、さらに一歩進んで、見た目の美しさを向上させることができます。 このために、Excelの日付の条件付き書式の機能を使用するつもりです。
上記の例に加えて、特定の月に関連するすべてのセルまたは行全体をすばやくハイライトする方法を紹介します。
例1.当月内の日付を強調表示する
先ほどの表で、当月の日付がある行をすべてハイライト表示させるとします。
まず、A 列の日付から最も単純な =MONTH($A2) 式で月の数値を抽出します。 次に、これらの数値と =MONTH(TODAY()) が返す現在の月を比較します。 その結果、月の数値が一致すれば TRUE、一致しなければ FALSE を返す以下の式ができあがりました。
=月($a2)=月(今日())
この式に基づいてExcelの条件付き書式ルールを作成すると、以下のスクリーンショットのようになります(記事は4月に書かれたので、4月の日付はすべてハイライトされています)。
例2.月と日による日付のハイライト表示
さらに、クリスマスやお正月など、年に関係なく祝日にハイライトを入れたい場合、どのようにすればよいでしょうか?
ExcelのDAY関数で月の日(1~31)を抽出し、MONTH関数で月番号を取得し、DAYが25か31のどちらか、MONTHが12に等しいかどうかをチェックするだけでいいのです。
=and(または(日($a2)=25, 日($a2)=31), 月(a2)=12)
ExcelのMONTH関数はこのように動作します。 見た目よりもはるかに多機能に見えますね。
次回は、週と年の計算を行い、さらに便利なトリックを学びたいと思います。 より小さな時間単位に興味がある方は、Excel Datesシリーズの過去のパートをご覧ください(下にリンクがあります)。 それでは、来週お会いできることを楽しみにしています。