カテナリーのオフィスブログ

柔らかすぎず、硬すぎず。Officeソフトのあれこれを記録。図書館司書としての本のご紹介も。

【Excel練習問題解答編】年月を入れるだけで自動作成される予定表

どうも、アイリス〇ーヤマのカイロってすごいと最近感心した、カテナリーです。
普段は図書館業務や趣味などでOfficeソフトを活用している者です。

今週は、前回のオリジナル問題の解答編。
問題の不備があって公開を止めた時間帯がありましたが、どうだったでしょうか?

catenaryoffice.com

財務系の知識は不要でしたが、普段使わないような関数や表示形式の知識が求められる、そんな問題でした。

本記事では、最初に解答例をご紹介し、その後解答ポイントを説明していきます。

解答例

入力する部分は2列ありました。
それぞれの入力内容と表示形式の解答例です。

A列の「日」

セルに入力する式: =IFERROR(VALUE(CONCAT($B$1,"/",$D$1,"/",ROW()-3)),"")

表示形式: ユーザー定義で「d

F列の「日」

セルに入力する式: =IFERROR(VALUE(CONCAT($B$1,"/",$D$1,"/",ROW()+13)),"")

表示形式: ユーザー定義で「d

B列、G列の「曜日」の入力内容(B4の場合)

セルに入力する式: =A4

表示形式: ユーザー定義で「(aaa)

解答ポイント

ポイントとなる点は4つあります。
それぞれ解説していきます。

入力された年月を使ってどうやって日付を表現するか?

肝心要の日付の表現方法です。これが最初のステップ。
Excelで日付と認識する2026/2/2のような形式で表現します。
ただし、年と月が分離しているため、これらを繋げなければなりません。

Excelでは文字列の結合するCONCAT関数が存在します。

support.microsoft.com

これを使って日付の形式にしましょう。
なお、仕切りであるスラッシュにはダブルクォーテーション(")が必要です。
これがないとエラーとなります。

残る日の部分ですが、今回はROW関数という、そのセルの行番号を出力する関数をしようしています。
ただ、これは僕個人の好みなので、1から順に数字を入れても構いません。
(オートフィルによる簡略化が出来ませんが)

ここまでの流れを整理すると入力する内容は、次の青字の通り。

CONCAT($B$1,"/",$D$1,"/",ROW()-3)

存在しない日付を弾けるか?

2026/2/30のように存在しない日付を弾く方法ですが、VALUE関数を使います。
入力された日付をシリアル値に直す関数ですが、存在しない日付を入れるとエラーを吐きます。

support.microsoft.com

これを使って、あるなしを判断します。
プラスでIFERROR関数を使い、存在しない日付の場合は空白を出力するようにしましょう。

=IFERROR(VALUE(CONCAT($B$1,"/",$D$1,"/",ROW()-3)),"")

これで完成です。

表示される日付を日のみにできるか?

日のみにするには、表示形式を設定する必要があります。
該当箇所を選択した上でセルの書式設定ウインドウを開き、「分類」を「ユーザー定義」にして「種類」に「d」を入力。
サンプルに日の数字だけ表示されればOKです。

曜日のみの表示方法は?

曜日の隣の日の日付を使って、曜日だけを出力します。
曜日は隣の日付の値をそのまま使えばいいので「=A4」となっています。
そこから表示形式をまた変更するのですが…。
曜日のみの出力方法は、以前ご紹介しているのでこちらをご覧ください。

catenaryoffice.com

解説終

 

以上、先週の問題解説でした。
普段よりも長い記事というのと、もう少し説明したい部分もあるので、しばらくはこれらに関連するテクニックをご紹介する記事が続くかもしれません。

また問題の題材が思い浮かんだら第二弾を作りたいと考えています。

それではまた来週~。