#スプレッドシートツイートシェアはてブLINEPocket以前も、ArrayFormula関数をつかって、自動カレンダーを作成する方法を紹介しました。【スプレッドシート】ArrayFormula関数を使って、日付入力を自動化しよう2019.02.05今回はその発展版、ドロップダウンリストの月・年を選ぶだけで、自動更新するカレンダーです。日)の形で、その日付を日付形式(年/月/日)にしてセルに返します。年と月はプルダウンで指定したD3,E3から、日は月初の日付なので、当然「1」ですね。関数は、名前の通り月末の日付を求めます。-2〜2)”年/月/日”に最終日を求めたい月と、その年を入力します。”年/月/日”は日付形式なので、date関数を置くこともできます。-2〜2は、入力月から見て、「先々月(-2)」から「再来月(2)」まで、最終日を取得する月を再調整します。0はその中央、つまり入力月そのままの最終日を取得をします。2:月初から月末まで、整列させるあとは月初から月末まで、整列させるのかな?そうね。1〜31の羅列なら、=ArrayFormula(Row(1:31))を使うわ。これを利用しましょう。=ArrayFormula(Row(月初:月末))でいいの?そうなんだけど、それだけだとエラーになるの。範囲ではないという理由で、エラーが表示されました。2018/4/31のことですね。これが範囲認識されないのは、日付は範囲を示す数字だと認識されないからです。一方で、実は形式が日付表示となっているだけで、本来日付は数字で作られています。2018/4/1なら「43191」、2018/4/31は「43220」といった具合です。以下の手順で設定を手動変更できます。タブ>表示形式>数字>「0(数字表記の意味)」をクリックRow関数は、数を範囲だと認識するから、2018/4/1を43191だったり、2018/4/31を43220に変えればいいのね。上図みたいに、タブから設定を変更するの?うんん。Date/Eomonth関数は、その式の中で数字を日付形式にするの。その式中で、別の関数を使って数字形式に戻すしかないのよ。先ほどの関数に、日付を数字表記に変えるindirect関数を混ぜて、A2に入力します。eomonth(date(D3,C3,1),0))))indirect関数のお陰で、範囲が数字として認識されましたね。式中の「&」は文字列同士をくっつける役割です。“」(=二重引用符)の有無は重要よ。“」がないけど、真ん中は「”:”」になってる。“」がある場合、文字列で情報を取得するの。“」が付いてないでしょう?これはDate関数の答え(=2018/4/1)を真の意味(=本来の数字表記)で取得したいからなの。「”:”」なのは、この点をただの文字として取得するってことね。数字表記)に変更できるんだ。Eomonth関数も、これで日付を数字に変更してるの。詳しくは次の記事を参考にしてね。#Indirect関数RECOMMENDこちらの記事も人気です。