いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)日付を自動入力する方法

 Googleスプレッドシートの各種機能を利用して日付入力を省力化する方法についてです。
 1つの日付を入力する方法と、連続する日付を入力する方法にわけて紹介します。

  • ショートカットや関数、カレンダーコントロールを利用する方法等で日付を簡単に入力することができます。
  • ドラッグ操作により連続する日付をまとめて入力することができます。

特定の日付を素早く入力する方法

半角の「@」を使って入力する方法

 「@」(エントリポイントと呼ばれるもの)を使った入力方法です。今日の日付のほか、昨日や明日の日付も瞬時に入力できるのがポイントです。

 適当なセル(ここではB2セル)に、半角の「@」を入力します。
 すると各種の入力候補が現れますが、この中に日付に関するものがあります。



 ここではその中から「今日の日付」を選択してみます。



 すると当日の日付が入力されました。
 日付の値そのものが入力されるので、値は翌日以降になっても変化しません。


 ちなみに「@今日の日付」まで入力して確定しても同じ結果になります。



 ところで、上記の選択肢から「日付」を選ぶとカレンダーコントロールを使った入力ができます。
 この方法なら事前の準備なしにカレンダーコントロールを利用できます。

ショートカットキーで今日の日付を入力する方法

 ショートカットキー「Ctrl+:」で当日の日付を入力できます(Windowsの場合)。
 Excelと違ってセミコロン(;)ではなくコロン(:)なのがポイントです。
 この場合も日付の値そのものが入力されるので、値は翌日以降になっても変化しません。

TODAY関数で今日の日付を入力する方法

 セルに「=TODAY()」と入力します。
 「=today()」と小文字で入れてもいいですが、カッコは省略できません。



 確定すると当日の日付が表示されます。
 この関数は入力された日付ではなく、シートを開いているまさにその日付(正確には再計算された日付)を表示するものなので、翌日以降になると値が変化します

入力規則を使ってカレンダーからの入力を設定しておく方法

 カレンダーコントロールを使って日付を入力できるよう設定しておく方法です。カレンダーコントロールによる入力は(上記の)「@」を使う方法でも可能ですが、広範囲に設定しておけば多数の日付の入力をより早く行うことができます。

 まずは対象となるセル範囲(ここではB2:B11)を選択し、その状態でメニューから「データ」→「データの入力規則」と選択します。



 ウインドウの右側にデータの入力規則のペイン(領域)が現れます。
 ここから「ルールを追加」をクリックします。



 「条件」と記されたところにあるプルダウンをクリックします。



 選択肢から「有効な日付」を選択します。
 「日付」を選択すると日付の詳細な条件を設定することができますが、ここでは省略します。



 最後に「完了」をクリックします。



 設定したセルをダブルクリック(正確には選択状態でさらにクリック)するとカレンダーコントロールが表示され、日付の入力を行うことができます。
 セルを選択した状態でキー入力を行えば直接入力をすることも可能です。

連続する日付を入力する方法

手動で入力する(フィルハンドルを使う)方法

 複数の連続する日付を並べて入力する方法です。
 まずは先頭となる日付を直接入力しておきます。



 入力したセルの右下部分(フィルハンドル)にマウスポインタを合わせます。
 するとマウスポインタが十字型に変化します。



 その状態でマウスを下にドラッグします。



 ボタンを離すと、各セルに1日ずつ異なる日付が入力されました。


 なおドラッグする方向を(上や左右に)変えればその方向に日付が並びます。



 離れた日付を入力することも可能です。
 ここでは1日おきの日付を入力することとし、最初の2つの日付を入力します。



 その2つのセルを選択し、下の方のセル(ここではB3セル)の右下部分にマウスポインタを合わせ、ドラッグします。



 マウスのボタンを離すと1日おきの日付が並べられました。

SEQUENCE関数を使う方法

 連番を出力する関数であるSEQUENCE関数を使う方法です。
 この関数の第3引数(開始値)として日付を「" "」で囲んで指定すれば、日付の連番(ただしシリアル値、つまり日付として扱える数値)を出力できます。

 B2セル

=SEQUENCE(5,1,"2023/3/15")

 第1引数(5)は出力する行数を、第2引数(1)は出力する列数を表しています。2つの数値を入れ替えれば値は横に並びます。
 日付の実体がシリアル値という数値であることを知っていれば「=SEQUENCE(5,1,DATEVALUE("2023/3/15"))」とやりたくなるところですし実際それでもうまくいきますが、このように簡単に記すこともできます。
 いずれ「" "」を忘れると全く違う結果になりますので注意してください。



 シリアル値のままだと意味が分からないので、メニューを使って日付の形式に表示を変換すると次のようになります。
 具体的にはセル範囲を選択し、メニューから「表示形式」→「数字」→「カスタム数値形式」と進み、「yyyy/m/d」と指定した結果です。



 最後にSEQUENCE関数を使った応用編です。ただし実用というよりは頭の体操といった感じの内容です。
 次の画像では、B3セルに入力された「年」の数値とC3セルに入力された「月」の数値を参照し、その月のカレンダーを作成しています(日付の入ったセルでは上記の要領でカスタム数値形式「d」を指定しています)。

 B6セル

=LET(d,DATE(B3,C3,1),w,WEEKDAY(d)-1,
SEQUENCE(ROUNDUP((DAY(EOMONTH(d,0))+w)/7),7,d-w)
)

 LET関数を使い、その月の1日を「d」、その月の1日の曜日を表す数値(日曜=0~土曜=6となるよう調整しています)を「w」と名付けています。
 こうすることで、カレンダーの一番左上に記される日付(その月の1日以前(1日を含む)の最後の日曜日) を「d-w」と求めることができ、これをSEQUENCEの第3引数(開始値)としています。



 SEQUENCE関数の第1引数内で出力行数を調整する計算を行っていますので、余分な行が発生しません。
 次の画像はちょうど4週で終わる2026年2月の例ですが、確かに4行のみ出力されています。