4/15/2022

Excel。カレンダー。曜日の欄に祝日名を手早く表示するにはどうしたらいい【holiday】

Excel。カレンダー。曜日の欄に祝日名を手早く表示するにはどうしたらいい

<IFNA+VLOOKUP+TEXT関数>

祝日名をカレンダーの曜日のとなりに、祝日名という列を設けると、あまり使わない列を追加することになります。

当然、印刷した時に幅広な表になってしまいます。


そこで、次の表のように、曜日の列に祝日名を表示するようにしたい場合、どのようにしたら、手早く表示することができるのでしょうか。


最初に、準備として、祝日の一覧表を用意する必要があります。

祝日一覧表は、運用上、成人の日など、どうしても毎年祝日が変わるので更新し続ける必要があります。


今回は、わかりやすいように、5月の祝日一覧をD1:E4に設定しています。


B列の数式を考えていくことにしましょう。

祝日一覧に該当する日付があれば、E列を表示して、そうでなければ、曜日を表示するという考え方がわかりやすいかと思います。


曜日は、WEEKDAY関数だと、曜日ごとの数値は算出できますが、1だったら、「日」というようしなければいけないので、多くの関数を使う必要がありそうです。


そのため、曜日は、「TEXT関数」をつかって、日付を曜日で表示させることにします。


祝日一覧から抽出するには、A列の日付が含まれているかいないかを判断する必要があります。

あるかないかを判断するには、MATCH関数をつかうことになるわけです。

ただ、MATCH関数をつかった場合、何番目にそのデータがあるのかを算出してくれるだけで、E列の祝日名をB列に表示させるためには、さらに、数式を修正する必要があります。


IFNA関数をつかうことで、当初イメージした、日付が祝日一覧にあれば、祝日名をそうでなければ、曜日を表示するという数式を作ることができます。


これらのことを踏まえて、B2の数式を確認してみましょう。


B2の数式は、

=IFNA(VLOOKUP(A2,$D$2:$E$4,2,FALSE),TEXT(A2,"aaa"))


VLOOKUP関数で検索方法を完全一致で設定した場合、抽出データが無い場合「#N/A」というエラーが表示されます。

ならば、「#N/A」エラーなのかを判断材料として、数式を組み立てることができれば、コンパクトな数式で処理を行うことができそうです。


「#N/A」エラーかどうなのかを判断することが出来る関数が「IFNA関数」です。


IFNA関数をつかうことで、#N/Aだったら、VLOOKUP関数。

そうでなければ、曜日を表示するという数式をつくることができるというわけです。


エラーで対応というわけですから、IFERROR関数でも問題はありません。


今回のように、エラーだったらということを判断基準とする関数をつかうことで、数式をシンプルにすることができるかもしれませんね。