2018年02月11日Excelで曜日を表示する[表示書式版]Excel開発Excel数式を使って曜日を表示させるのではなく、日付を元に表示書式を使って曜日を表示する方法を説明します。ちなみに曜日を表す表示書式文字列はaaaで曜日部分(月や金など)を表示できます。サンプルとして次のようなExcelをつくる場合で説明します。月ごとにシートが分かれていて、横方向に日付を表示して、その下に曜日を表示するような表です。Excelでも書式や数式に違いはありません。サンプルでは、タイトルや日(4行目のセル)、曜日(5行目のセル)などのセルの値自体は日付で設定し、表示する値をセルの書式設定の表示形式で変更するようにしています。年C1セルには直接手入力するものとします。タイトルのB3セルの値は、年C1セルとシート名から取り出した月に、月初の1を使って、日付を作成します。数式は=DATE(C1,SUBSTITUTE(RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1))),"月",""),1)使っている数式CELL関数は、色々な方法を取得するために使います。a1)のように"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関数は、指定した文字数右から取り出す場合に使います。4)と書くと、右から4文字分のきくけこが返ってきます。SUBSTITUTE関数は、文字の置換を行います。"雨")と書くと、本日は雨なりが取得できます。DATE関数は、年(西暦年)、月、日を指定することで日付を作り出します。9)のようにすると、日付2017/6/9が取得できます。タイトル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がつくようになります。タイトルB3セルの値自体は変更しないで、表示だけ変更されました。最初の日付(1日)B4セルは、タイトルセルB3を参照するするだけにします。#####が表示されている場合は後で直すので無視してください(セルの横幅に収まらない表示の場合こういう表示になります)。数式は=B3最初の日付(1日)B4セルのセルの書式設定で表示形式をユーザー設定にして、種類欄にdと入力します。表示書式のdは日付から日を取り出して表示します。1日であれば1を、12日であれば12のように表示します。ちなみに表示書式をddとすると日付から常時2桁の日を取り出して表示します。1日であれば01を、12日であれば12のように1桁の日付の場合は0がつくようになります。最初の日付(1日)B4セルの値自体は変更しないで、表示だけ変更されました。曜日を表示する全てのセルに、表示したい日付のセル(1日目であれば、B4セル)を参照するようにします(2日目以降は1日目のセルB5をコピーして貼り付けることで設定可能です)。#####が表示されている場合は後で直すので無視してください(セルの横幅に収まらない表示の場合こういう表示になります)。1日目の数式は=B4曜日を表示する全てのセルのセルの書式設定で表示形式をユーザー設定にして、種類欄にaaaと入力します。表示書式のaaaは日付を元に、曜日のみを取り出して表示します。金曜日の日付に対して設定すれば金を表示します。ちなみに表示書式をaaaaとすると、日付を元に何曜日を表示します。金曜日の日付に対して設定すれば金曜日を表示します。曜日セルの値は変更しないで、表示だけ曜日になります。日付を指定しない場合は土が表示されます。日付の2日以降月末までは、数式で日を計算します。数式の意味は左横の日付に1日加算してた日付が同じ月なら表示し、異なれば表示しないとう数式です。2日目C5セルに数式を設定してます。表示される値が数字になっていますが後で直すので無視してください。2日目の数式は=IF(MONTH($B$3)=MONTH(B4+1),B4+1,"")使っている数式MONTH関数は、日付から月の部分だけを取得するために使います。2017/6/9であれば6を返します。日の加減算は、単純に+1や-1で可能です。B4セルに2017/6/1という日付がセットされている場合に、B4+1とすれば2017/6/2と1日加算された値が返ってきます。$B$4のように$がつく参照を絶対参照といって、コピペしても参照は変わりません。通常のB4は相対参照といって、コピー元とコピー先に応じて自動的に参照が変わります。IF関数は、条件を指定し、条件に合致した場合に適用する値、合致しなかった場合に適用する値を指定します。"7月")という数式を実行した場合は、6月が返ってきます。この数式のMONTH(B4)=6部分が条件、条件に合致した場合"6月"を、合致しなかった場合は"7月"が実行されます。2日目C5のセルをコピーし、3日目D5セルから31日AF5セルに貼り付け(ペースト)するこで数式が設定されます。形式を選択してペーストで数式にすると、罫線などは貼り付け対象外になって数式だけ貼り付けることができるので便利です。2日目C5セルから31日目AF5セルのセルの書式設定で表示形式をユーザー設定にして、種類欄にdと入力します。日付B4の値は変更しないで、表示だけ変更されました。以上で、サンプルのExcel表は完成です。年を変更したり、シート名の月を変更すれば自動で曜日及び日付は計算されて表示されます。コメントをキャンセル入力欄すべて入力してください。メールアドレスが公開されることはありません。内容をご確認の上、送信してください。有限会社おかもとでんか。