Excelで曜日を表示する[表示書式版]

Microsoft Excel

数式を使って曜日を表示させるのではなく、日付を元に表示書式を使って曜日を表示する方法を説明します。ちなみに曜日を表す表示書式文字列はaaaで曜日部分(月や金など)を表示できます。

サンプルとして次のようなExcelをつくる場合で説明します。月ごとにシートが分かれていて、横方向に日付を表示して、その下に曜日を表示するような表です。サンプルの環境はmacOSのExcel 15.6ですが、Windows版 Excelでも書式や数式に違いはありません。
サンプル完成図

サンプルでは、タイトルや日(4行目のセル)、曜日(5行目のセル)などのセルの値自体は日付で設定し、表示する値をセルの書式設定表示形式で変更するようにしています。

  1. C1セルには直接手入力するものとします。
    年は直接入力する

  2. タイトルのB3セルの値は、年C1セルとシート名から取り出した月に、月初の1を使って、日付を作成します。数式は=DATE(C1,SUBSTITUTE(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))),"月",""),1)
    タイトルセルにはシート名から取り出した月と、年をもとに月初の日付になる数式を設定


    • CELL関数は、色々な方法を取得するために使います。CELL("filename", a1)のように"filename"を指定すると、ファイル名+シート名を取得できます。
    • CELL("filename", a1)では、ファイル名とシート名を取得することができます。取得できる値は/Users/test/Desktop/[その1.xlsx]6月などのようにExcelファイルのパス(/Users/test/Desktop/)と、[]で囲まれている場所にExcelファイル名([その1.xlsx])を、その後ろにシート名(6月)をつないだ形で取得します。
    • LEN関数は、文字数を取得するときに使います。=LEN("abcあいうえお")と書くと、文字数が8文字なので8が返ってきます。
    • FIND関数は、指定した文字がどの位置にあるかを調べるときに使います。=FIND("]","abc[その1.xlsx]6月")と書くと、13が返ってきます。これはabc[その1.xlsx]6月の中で]は13番目に位置しているからです。
    • RIGHT関数は、指定した文字数右から取り出す場合に使います。=RIGHT("あいうえおかきくけこ", 4)と書くと、右から4文字分のきくけこが返ってきます。
    • SUBSTITUTE関数は、文字の置換を行います。=SUBSTITUTE("本日は晴天なり", "晴天", "雨")と書くと、本日は雨なりが取得できます。
    • DATE関数は、年(西暦年)、月、日を指定することで日付を作り出します。=DATE(2017, 6, 9)のようにすると、日付2017/6/9が取得できます。
  3. タイトルB3セルのセルの書式設定表示形式ユーザー設定にして、種類欄にyyyy"年"m"月のリスト"と入力します。
    表示書式を設定する


    • 表示書式のyyyyは日付から4桁の西暦年を取り出して表示します。2017/6/1という日付であれば2017を表示します。
    • 表示書式のmは日付から月を取り出して表示します。2017/6/1という日付であれば1を、2017/6/22という日付であれば22を表示します。
    • 表示書式の””で囲まれた部分は、そのまま表示します。
    • ちなみに表示書式をyyとすると、西暦年の下2桁の取り出して表示します。2017/6/1という日付であれば17を表示します。
    • ちなみに表示書式をeとすると、日付から和暦年を取り出して表示します。2017/6/1という日付であれば平成29年なので29を表示します。この表示書式にした場合でmacOSのExcelで表示できない場合は[$-30000]eを試してみてください。
    • ちなみに表示書式をmmとすると、2桁の月を取り出して表示します。2017/6/1という日付であれば06というように1桁の月の場合は0がつくようになります。
  4. タイトルB3セルの値自体は変更しないで、表示だけ変更されました。
    タイトルが表示される

  5. 最初の日付(1日)B4セルは、タイトルセルB3を参照するするだけにします。もし#####が表示されている場合は後で直すので無視してください(セルの横幅に収まらない表示の場合こういう表示になります)。数式は=B3
    1日目のセルにはタイトルセルを設定する

  6. 最初の日付(1日)B4セルのセルの書式設定表示形式ユーザー設定にして、種類欄にdと入力します。
    表示書式を1桁の日(d)にする


    • 表示書式のdは日付から日を取り出して表示します。1日であれば1を、12日であれば12のように表示します。
    • ちなみに表示書式をddとすると日付から常時2桁の日を取り出して表示します。1日であれば01を、12日であれば12のように1桁の日付の場合は0がつくようになります。
  7. 最初の日付(1日)B4セルの値自体は変更しないで、表示だけ変更されました。
    1日目の日が表示される

  8. 曜日を表示する全てのセルに、表示したい日付のセル(1日目であれば、B4セル)を参照するようにします(2日目以降は1日目のセルB5をコピーして貼り付けることで設定可能です)。はもし#####が表示されている場合は後で直すので無視してください(セルの横幅に収まらない表示の場合こういう表示になります)。1日目の数式は=B4
    曜日のセルに表示したい日のセルを設定する

  9. 曜日を表示する全てのセルのセルの書式設定表示形式ユーザー設定にして、種類欄にaaaと入力します。
    表示書式を曜日(aaa)にする


    • 表示書式のaaaは日付を元に、曜日のみを取り出して表示します。もし金曜日の日付に対して設定すればを表示します。
    • ちなみに表示書式をaaaaとすると、日付を元に何曜日を表示します。もし金曜日の日付に対して設定すれば金曜日を表示します。
  10. 曜日セルの値は変更しないで、表示だけ曜日になります。なお日付を指定しない場合はが表示されます。
    曜日が表示される

  11. 日付の2日以降月末までは、数式で日を計算します。数式の意味は左横の日付に1日加算してた日付が同じ月なら表示し、異なれば表示しないとう数式です。まず2日目C5セルに数式を設定してます。表示される値が数字になっていますが後で直すので無視してください。2日目の数式は=IF(MONTH($B$3)=MONTH(B4+1),B4+1,"")
    2日目の数式を設定


    • MONTH関数は、日付から月の部分だけを取得するために使います。2017/6/9であれば6を返します。
    • 日の加減算は、単純に+1や-1で可能です。B4セルに2017/6/1という日付がセットされている場合に、B4+1とすれば2017/6/2と1日加算された値が返ってきます。
    • $B$4のように$がつく参照を絶対参照といって、コピペしても参照は変わりません。通常のB4は相対参照といって、コピー元とコピー先に応じて自動的に参照が変わります。
    • IF関数は、条件を指定し、条件に合致した場合に適用する値、合致しなかった場合に適用する値を指定します。B4セルに2017/6/1という日付がセットされていて=IF(MONTH(B4)=6, "6月", "7月")という数式を実行した場合は、6月が返ってきます。この数式のMONTH(B4)=6部分が条件、条件に合致した場合"6月"を、合致しなかった場合は"7月"が実行されます。
  12. 2日目C5のセルをコピーし、3日目D5セルから31日AF5セルに貼り付け(ペースト)するこで数式が設定されます。
    なお形式を選択してペースト数式にすると、罫線などは貼り付け対象外になって数式だけ貼り付けることができるので便利です。
    数式をコピー

  13. 2日目C5セルから31日目AF5セルのセルの書式設定表示形式ユーザー設定にして、種類欄にdと入力します。
    表示書式を1桁の日(d)にする

  14. 日付B4の値は変更しないで、表示だけ変更されました。
    日が表示される

  15. 以上で、サンプルのExcel表は完成です。年を変更したり、シート名の月を変更すれば自動で曜日及び日付は計算されて表示されます。