4764Q.Excelでスケジュール管理などを行っていて、日程が休日かどうかを判定するのにWEEKDAY関数を使っていますが、これだと祝日や会社の創立記念日などの休日が判定できません。何か良い方法はありませんか?A.ユーザー定義関数で、休日かどうかを判定する関数を作成しましょう。Excelでは、VBAのFunctionを、Excelのワークシートで使うことができます。これをワークシート関数に対して、「ユーザー定義関数」と呼んだりします。下記のコードを「標準モジュール」の関数(Function)として作成して下さい。Functionこれでユーザー定義関数「IsNonWorkDay」ができました。先にこの関数のコードを説明しましょう。この関数は何もなければFALSEつまり休日でないとの結果を返します。この後のIF分では、休日となる条件を判定し、その場合にこの関数の戻り値をTRUEすなわち休日として返すような作りになっています。ひとつめの★部分で、ワークシート関数のWeekdayを使用して、この値が1(日曜日)または7(土曜日)の場合にTrue(つまり休日と判定する)を返します。ここで休日でなければ、次の★の部分の処理で、土日以外の休日判定をします。この例では、4月1日が会社の創立記念日で休日と判定されるようになっています。この後に、例えば国民の休日の日付などを追加することで、IsNonWorkDay関数で全ての休日を判定できるように処理することができます。このIsNonWorkDay関数は、ワークシートのセル上で、普通のワークシート関数と同じように使用できます。TRUEと表示されれば休日、FALSEと表示されれば休日ではありませんが、期待した結果になっていたことと思います。このように、ユーザー定義関数を使うことで、セルの式がすっきりするというメリットがあります。逆のデメリットとしては、自分で作ったユーザー定義関数の入ったシートは、きちんと説明しないと、別の人が使う場合にかえってわかりにくかったりします。その点を踏まえて、状況に応じて便利に使っていきましょう。2017当ブログではビジネスシーンで起こるPCの様々な疑問を記事にし、解決するブログです。個別のご相談も承っておりますので、ご不明な点はお気軽にお問い合わせフォームor下記メールアドレスへお問合せくださいませ。オフィスソフト活用・業務効率化Q&AブログHomeお問合せ。