Excelで簡単予定管理 ToDoリストをカレンダー化

日経PC21

ToDo(やること)リストをExcelで管理すると、締切日の順に並べ替えるなどいろいろと応用が利く。だが、ときにはそれをカレンダー形式で一望したいこともある。そのような場合はCSV形式で保存してGoogleカレンダーなどに読み込ませるのが手っ取り早い。Excel上で月間カレンダーなどに変換するのは相当に面倒だからだ。

だが、それは昔の話。最新版のExcelが装備する「動的配列」機能を使えばいとも簡単に、「項目+日付」の一覧表をカレンダー形式に変換できてしまう(図1)。順を追って解説していこう。

図1 Excelで作ったToDo(やること)リスト(上左)を月間カレンダー形式で表示した(上右)。もちろん手作業のコピペではなく、数式による自動表示だ。月間カレンダーの 1 行目にある年や月の数値を変えると、当該年月の内容に切り替わる(右下)。使うのはMicrosoft365などの最新版Excelで使えるFILTER関数と、文字列を連結するTEXTJOIN関数。ステップバイステップで仕組みを見ていこう

まずは日付を1つ指定して、その日の「やること」を抜き出してみる。事前準備としてToDoリストの表をテーブルに変換しておく(図2)。

そうしたら、「やること」が3つある6月27日の日付を入力し、その右隣に図3のFILTER関数式を入力してみよう。当該日の「やること」が3つ縦に表示されるはずだ。FILTER関数は条件に合致した値を抽出し、結果を動的配列として返す。動的配列とはダイナミックに大きさが変化する仮想的なセル範囲だと思えばよい。

図2 数式を見やすくするため、ToDoリストはテーブルに変換して(1、2)、わかりやすいテーブル名(ここでは「ToDo」)を付けておく(3、4)
図3 6月27日の「やること」を抜き出してみよう。D1セルに日付を入力し、その右隣に図のFILTER 関数式を入力すると、当該日の「やること」が1列×3行の動的配列として返る。数式中の赤字はテーブル構造化参照で「ToDo[やること]」は「ToDo」テーブルの「やること」のセル範囲(A2〜A19)、「ToDo[締切]」は同じく「締切」のセル範囲(B2〜B19)を指す。数式を入力中にそれらのセル範囲をドラッグすると、テーブル構造化参照が入力される。このFILTER関数では「『締切』がD1セルに等しい」という条件に合致する「やること」を抽出した

注意したいのはエラー処理。「やること」がない日付では結果がエラーになってしまう(図4)。何もないときは空白となるように対策を施す(図5)。

図4 日付を6月1日に変えると、「#CALC!」エラーになってしまった。その日は「やること」がないためだ
図5 FILTER関数の第3引数として「""」を追加すると(赤字部分)、「やること」がない場合には空白となる。以下ではこの数式を使うことにする
次のページ
FILTERで抜き出して、TEXTJOINで連結