何らかの事情で「月末日」だけを入力しなければならないことがありますが、エクセルの場合、「オートフィル」機能が大変不便です。そこで、関数だけを使ってオートフィルをやってしまおうというのが本稿の試みです(※『エク達』は年末年始、休刊いたしましたが、本日より再開します)。
エクセルを効率的に使いこなすには、ときとして使い勝手の悪い機能を捨て、関数を創意工夫することで業務を進めていくことが重要だ。その典型例が、「月末日のみを指定する」というテクニックであろう。
エクセルを使っていると、「オートフィル」機能などを使いたくなることもあるが、エクセルの場合これらの機能の使い勝手が意外と良くないのも事実だ。
かつてのエクセルだと「Altキー」などを活用し、オートフィルを簡単に指定するテクニックがあったのだが、Windows7の頃からだろうか、「リボン」なるシステムが組み込まれたころからエクセルの使い勝手が極端に低下し、こうしたテクニックは失われてしまった。
結局、現在のエクセルだと、「オートフィル」はマウスで右クリックしてドラッグするという、非常に情けない、原始的なテクニックなどによらざるを得ない(図表1~図表3)。
図表1 現在のオートフィル機能(①)
図表2 現在のオートフィル機能(②)
図表3 オートフィルを使用した結果
こうしたなか、実務上よく使用するのが、「月末日だけを入力する」というテクニックである。
たとえば、あるシートを作成していて、A2セルに「2021/1/31」と入力したとしよう。そして、A3セル以降に「2021/2/28」、「2021/3/31」などと「月末日のみ」を入力するというニーズがあったとする。
しかし、「マウスを使ったオートフィル」だと、図表2や図表3のように、「月末を指定する」ということができない。翌日、翌々日、という具合に、1日ごとに入力されてしまうのだ。
これを避けるためには、あらかじめA2セルに「2021/01/31」、A3セルに「2021/02/28」と入力したうえで、上記と同じ操作を行ってやる必要がある(図表4~図表5)。
図表4 オートフィルを使うための準備
図表5 一応、できたが…
しかも、このやり方だと、データを追加する際に同じ作業をしてやる必要が生じることもあるし、また、途中に業を挿入するなどした場合に、データを入力し直してやらなければならない。
不便だ。
そこで、やはり関数を使って「月末日」を指定してしまおう。
やり方はとっても簡単。
A2セルに「2021/01/31」と入力し、A3セルに次の計算式を入力する。
=DATE(YEAR(A2),MONTH(A2)+2,1)-1
この「DATE関数」は、「DATE(年,月,日)」で指定した日付のシリアル値を返す関数であり、そして、この関数が意味するものは、「A2セルに入力されている値を日付のシリアル値とみなし、その『年』、『翌々月』、『1日』に相当するシリアル値から1を引け」、である。
- DATE関数…「DATE(年,月,日)」で「年月日」に相当するシリアル値を返す
- YEAR関数…「YEAR(数値)」でその数値(シリアル値)に相当する年(西暦)を返す
- MONTH関数…「MONTH(数値)」でその数値(シリアル値)に相当する月を返す
- DAY関数…「DAY(数値)」でその数値(シリアル値)に相当する日を返す
計算結果は、次のとおり(図表6)。
図表6 計算結果
この計算は、エクセルが日付を固有の数値(シリアル値)で管理しているという特徴を踏まえたものだ。
月末日は、1月、3月、5月、7月、8月、10月、12月が31日、2月は28日(うるう年などの場合は29日)、それ以外の月が30日、と、てんでバラバラだ。
だからこそ、アプローチを変えて一回「翌々月の1日」をわざと指定してやり、その日付から1を引いてやれば良い、というわけである。これこそ「発想の転換」であろう。
View Comments (1)
専用のeomonthを使ってもシンプルだと思います
A1セルの翌月末日なら
=EOMONTH(A1,1)
A1セルの翌月初日なら
=EOMONTH(A1,0)+1