3/08/2015

Excel。Day of the week 。曜日を求める方法をまとめてみました。


Excel。曜日を求める方法をまとめてみました。

ユーザー定義+TEXT関数+WEEKDAY関数+CHOOSE関数


最近、Excelでスケジュール関係の表をつくるので、
曜日の算出方法に関してよくご質問をうけるので、
今回は、代表的な4パターンをまとめてご紹介しようと思います。

このようなことをやっていきます。

B列には、2015年3月1日~3月10日までが入力されております。
最初にご紹介するのは、ユーザー定義を使った方法をご紹介していきます。
C3をクリックして、B3を参照する計算式を作ります。

=B3と入力して確定します。当然3月1日と表示されます。

そうしましたら、C3のセルをアクティブにしたまま、
セルの書式設定ダイアログボックスを表示しましょう。

分類をユーザー定義で、種類をaaaと入力してOKボタンをクリックしましょう。
すると、C3には日と表示されましたね。

あとは、C12までオートフィルハンドルを使ってコピーしましょう。

これで、ユーザー定義は完成しました。
和暦の曜日の省略が aaa 
和暦の曜日がaaaa
西暦の曜日の省略が ddd
西暦の曜日がdddd

となっていますので、用途に合わせて、aが3個なのか、4個なのかということになります。

この方法は、一番簡単だと思いますが、
条件付き書式を使って土曜日を青色で塗りつぶそうとしても、簡単に出来ないのが欠点ですね。
あくまで、表示形式を変えただけですから。

次にご紹介するのはTEXT関数。
これは、結構簡単ですし汎用性もあるので、オススメですね。
D3をクリックして、TEXT関数のダイアログボックスを表示しましょう。

値には、日付が入っているB3を入力します。
表示形式には、先程ご紹介した、”aaa”と入力します。
あとは、OKボタンをクリックしましょう。
そして、オートフィルハンドルを使って数式をコピーしましょう。

これが、TEXT関数を使った曜日の算出方法でした。とっても簡単ですね。
当然のことながら、表示形式を、”aaaa”と入力すれば、日曜日と表示されますよ。

さて、次に紹介するのが、WEEKDAY関数ですが、
このWEEKDAY関数は曜日を数値として返してくるので、そのままでは使えません。

たとえば、日曜日を1として返してきますので、これを日と表示するためには、
IF関数とのネストで処理をする必要があります。

E3をクリックして、IF関数のダイアログボックスを…と書いていきたいのですが、
長すぎますので、数式を下記に記載します。

=IF(WEEKDAY(B3,1)=1,"日",IF(WEEKDAY(B3,1)=2,"月",IF(WEEKDAY(B3,1)=3,"火",IF(WEEKDAY(B3,1)=4,"水",IF(WEEKDAY(B3,1)=5,"木",IF(WEEKDAY(B3,1)=6,"金",IF(WEEKDAY(B3,1)=7,"土","")))))))


う~む。TEXT関数と比べてみても、大変なのが一目瞭然。
アイディアはいいのですが、これでは、自力で曜日を入力したほうが早いでしょうね。

そこで、CHOOSE関数とWEEKDAY関数をネストすると、煩雑ではなく同じことができますので、
最後は、F3をクリックして、CHOOSE関数のダイアログボックスを表示しましょう。

インデックスには、WEEKDAY関数を入力しますので、WEEKDAY(B3,1)。
あとは、値1~7までに日月火水木金土と入力していきます。
そして、OKボタンをクリックします。

数式は、

=CHOOSE(WEEKDAY(B3,1),"日","月","火","水","木","金","土")


これで、実は先程のIF+WEEKDAY関数と同じことが出来るのです。
関数のパワープレーも嫌いではありませんが、
ちょっとした関数を知っているとスマートな処理で済むというパターンの1つですね。

今回紹介したのは代表例ですので、
どれかお好きなものを使ってスケジュール表を作ってみてはいかがでしょうか?