日~土の表示になります。表示形式を標準にすると元の数値に戻ります。表示形式を「aaa」にすると、1~7の数値を日~土に変換して表示されます。8以上も同様となります。7で割ったときの余りが1~6のとき、それぞれ日~金となり、7の倍数の時は「土」となります。(2)曜日を調べてみよう問題セルA1に「2020/1/1」と入力して曜日を調べなさい。任意の日付(生年月日など)を入力して曜日を調べなさい。解説Excelの日付は整数値(シリアル値)の連番で管理されているため、7で割ったときの余りを考えることができます(参考:【Excel】日付の「シリアル値」を本気で理解するには何を練習するべきか?)。1900年3月1日以降、日曜日のシリアル値を7で割ると余りは1になります。土曜日のシリアル値は必ず7の倍数になります。日付のシリアル値は、通常の整数値を入力した場合と同じように、シリアル値を7で割ったときの余りが1~6の時は日~金、7の倍数の時は土曜日になります。2020年1月1日のシリアル値は43831です。Excelで「2020/1/1」と入力するのと「43831」と入力するのは同じです。表示形式が異なるだけです。表示形式を「aaa」にすると「水」になります。Excelを使うと将来や過去の日付の曜日を簡単に求めることができます。日曜日の場合、表示形式が「aaa」なら「日」となりますが、「aaaa」「ddd」「dddd」なら、それぞれ「日曜日」「Sun」「Sunday」となります(以下、省略)。問題セルA1に「水曜日」と入力した。表示することは可能か。解説セルA1に「水曜日」と入力したとします。これに1を足してもエラーになるだけです。文字列に1を足すことはできないからです。そこで、セルA1に「4」と入力します。この4というのは前述の水曜日にあたる数値です。表示形式を「aaaa」にすると水曜日という表示になります。4に1をたすと5になりますが、表示形式によって木曜日になります。これをオートフィルすると連続した曜日になります。先頭の数値を変えると、それ以降も自動的に曜日が変わります。(4)後ろに曜日を付ける問題セルA1に2020/1/1と入力した。この日付の後に(水)をつけなさい。(aaa)」にします。これで最後に曜日が付きます。(5)1か月間の日付と曜日を表示する問題セルA1に「2020/1/1」と入力した。セル範囲A3:B33に1日~31日の日付を入力しなさい。セルA1、セル範囲A3:A33、セル範囲B3:B33の表示形式をそれぞれ「yyyy年m月」「d」「aaa」にしなさい。解説セルA1を参照します。これに1を足すと翌日の日付になります。これは日付がシリアル値(連番)で管理されているからです(参考:【Excel】完全マスター!日付の足し算と引き算を使った日数の計算問題)。A33までコピーします。左隣のセルを参照します。セルA1の表示形式を「yyyy年m月」にします。A列の表示形式をユーザー定義で「d」にします。B列の表示形式をユーザー定義で「aaa」にします。これで、日付と曜日になります。いっぱんに、カレンダーを作成するときは、西暦年月日をフルで入力してから、表示形式で変換します。セルA1を2020/3/1に変更すると3月のカレンダーになります。3.TEXT関数で曜日を求める(1)別のセルに曜日を表示する問題セルA1とセルB1に日付を入力した。TEXT関数でセルA1の曜日を表示しなさい。2つの曜日を求めて「月・金」と表示しなさい。基本的に曜日を表示するだけであれば、セルの表示形式を変更するだけで良いですが、曜日の文字列でさらに、文字列としての演算をする場合はTEXT関数を使います(参考:【Excel】TEXT関数で数値を文字列に変換するときの注意点と練習問題)。TEXT(数値,"表示形式")曜日を求めるなら「=TEXT(A1,"aaa")」となります。文字列なので&で連結することができます。=TEXT(A1,"aaa")&"・"&TEXT(B1,"aaa")TEXT関数で取り出した文字列は、数値ではなく元の日付(シリアル値)の情報は失われているため、標準の表示形式で数値になることはありません。パーセントの表示形式の設定と変更)。このように、日付のシリアル値を、日本語または英語の曜日の文字列に変換するには、表示形式を用いるか、TEXT関数を使います。文字列で曜日を表示するには「WEEKDAY関数が必要」などとまったく意味不明な説明をしているサイトがあるようですが間違いです。WEEKDAY関数がわざわざ数値を返している意味を理解していないのではないでしょうか??WEEKDAY関数は数値に変換するものであって文字列に変換するものではありません(後述)。問題セルA1に年月日を表す8桁の数値を入力した。TEXT関数で曜日を求めなさい。年月日を8桁で入力したものは、その年月日のシリアル値ではないため、7で割ったときの余りが一致するとは限りません。そこで、8桁の数値をいったん日付に変換します(参考:【Excel】TEXT関数で数値を文字列に変換するときの注意点と練習問題)。ハイフン区切りにしてから、1を掛けることによって日付にします。=TEXT(A1,"0-00-00")*144980は2023/2/23のシリアル値です。数値なので、表示形式を変えるだけで曜日の表示にすることが可能です。曜日をTEXT関数で求める場合、入れ子になります。問題A列にランダムに日付を入力した。このなかで土日の日付だけ抽出しなさい。特定に曜日を抽出するのに最も簡単な方法はTEXT関数で曜日を求めることです。=TEXT(A2,"aaa")オートフィルタを設定して、土日を選べばよいです(参考:【Excel】オートフィルタの設定と解除、条件にあう行を抽出する方法の総復習)。4.日本語の曜日を数値に変換する問題セルA1に「水」と入力した。日~土曜日を1~7の数値とするとき、セルA1に対応する数値を求めなさい。数値を日本語の曜日にするには表示形式を変えればよいですが、逆に、日本語の曜日を数値にする関数はありません。検索します(参考:【Excel】LEN関数は文字数、FIND関数は左から何文字目にあるかを数える関数である)。これで、日~土を1~7の数値にすることができます。問題A列に連続する日付を入力した。土曜日または日曜日の場合は0、それ以外の場合は1と表示しなさい。土曜日または日曜日の場合は休日、それ以外は空欄にしなさい。前述のとおり、日付を7で割ったときの余りが曜日に対応しています。そこで、余りを求めるMOD関数を用いて曜日の判定をする方法があります。MODは余りなので、土曜日は7ではなく0になります。原則として、土曜日=0であることを利用する場合は、MOD関数を使います。日付を7で割ると、その余りは0~6になります(表示形式を標準にする。=MOD(A1,7)これが2以上であれば平日です。TRUEは平日、FALSEは土日です。=MOD(A1,7)>=2これに1を掛けたら、平日が1、土日は0になります(参考:【Excel】IF関数が使えない原因は「比較演算」の練習不足である)。=(MOD(A1,7)>=2)*1ちなみに、この列を合計すると平日の日数となります。TRUE/FALSEを別の文字列に変換するには、IF関数を使います。セルA1に入力した日付とセルB1に入力した日付の曜日が一致すればTRUE、異なる場合はFALSEと表示しなさい。曜日が一致した場合に「〇」と表示しなさい。曜日が一致するとき、7で割ったときの余りが一致します。7で割ったときの余りが一致する場合、引き算をすると余りが消えて7の倍数になります。7(a-b)したがって、2つの曜日が一致するとき、7で割ったときの余りが0になります。一致すればTRUE、不一致ならFALSEです。=MOD(A1-B1,7)=0TRUE/FALSEを別の文字列に変換するには、IF関数を使います。土曜日が7の倍数であることから、日付(シリアル値)を、CEILING関数を用いて7の倍数で切り上げたり、FLOOR関数を用いて7の倍数で切り捨てると土曜日になります。これを利用して、特定の曜日の日付を求めることができます。詳しくは別の記事で解説しています。問題A列に入力した日付が木曜日であればTRUE、それ以外はFALSEとしなさい。解説WEEKDAY関数は引数が2つありますが、第2引数を省略したときは、日~土曜日を1~7の数値で返します。[種類])MOD関数との違いは土曜日が0か7かというだけであって、他は変わりません。7で割ったときの余りとほぼ同じと言えます。日付から曜日を求めるだけであれば、前述のように表示形式またはTEXT関数を使いますが、曜日(文字列)ではなく数値を返すということは、数値でなければならない状況のときにWEEKDAY関数を使います。木曜日であれば、WEEKDAY=3です。TRUEであれば木曜日です。=WEEKDAY(A1)=3各曜日の条件式は次の通りです。問題A列に入力した日付が火曜または水曜の場合に*印をつけなさい。火曜または水曜ということは、WEEKDAYが3または4ということです。=IF(OR(WEEKDAY(A1)=3,WEEKDAY(A1)=4),"*","")(3)他の関数と併用して判定する問題A列に入力した日付が月・水・金のいずれかであれば「会議」、それ以外は空白としなさい。解説WEEKDAYが偶数であれば月水金です。偶数かどうかを判定する関数はISEVENです(奇数はISODD)。=IF(ISEVEN(WEEKDAY(A2)),"会議","")ISEVEN関数やISODD関数のほか、MOD、INT、PRODUCTなど、引数が数値でなければならない関数はたくさんあります。このような関数の引数として曜日を使うときは必ずWEEKDAY関数を使います。(4)第2引数を指定する問題A列に入力した日付が火曜または水曜の場合に*印をつけなさい。解説さきほどと同じ問題ですが、WEEKDAY関数の第2引数を使うと数式が短くなります。WEEKDAY関数の第2引数を指定すると曜日によって返る値が変わります。(土曜)このなかで、火・水が右端または左端に寄っているものを探します。12か14が使えます。第2引数を12とするとWEEKDAYが2以下であれば火または水です。=IF(WEEKDAY(A1,12)<=2,"*","")第2引数を14とするとWEEKDAYが6以上であれば火または水です。問題A列に入力した日付が月曜・木曜の場合は「A」、火曜・金曜の場合は「B」、水曜・土曜の場合は「C」、日曜の場合は「S」と表示しなさい。解説MID関数は、1から始まる整数値を他の1文字に変換するときに使います(参考:【Excel】LEFT関数、RIGHT関数、MID関数で文字列を抽出する方法の基本例題)。WEEKDAY関数の戻り値は1~7なので、MID関数の開始位置(第2引数)として使えます。=MID("日月火水木金土",WEEKDAY,1)日曜日から順に文字を連結して(SABCABC)、MIDで1文字抽出します。月曜と木曜を「塾」、水曜を「英会話」、日曜を「スイミング」にして、それ以外を空欄にしなさい。解説MID関数は1文字だけ抽出するときに使いますが、2文字以上の場合はCHOOSE関数を使います。=CHOOSE(WEEKDAY,日,月,火,水,木,金,土)第1引数にWEEKDAYを入れて、第2引数以降に日曜日から順に並べます。=CHOOSE(WEEKDAY(A1),"","塾","","英会話","塾","","スイミング")8.曜日の色分け、条件付き書式WEEKDAY関数を用いて、曜日で塗りつぶし等の書式設定をすることができます。これについてはこちらの記事をご覧ください。【Excel】月間予定表の作り方、日付や曜日を自動で変更して色も変更するhttps://www.waenavi.com/entry/20191115/15738114609.補足:曜日がずれる件Excelは、1900年2月28日と1900年3月1日の間に、実際には存在しない1900年2月29日が存在するバグがあります。このため、1900年1~2月の日付と曜日が1日ずれています。この点について、曜日のずれを直すために、Excelオプションの詳細設定で「1904年から計算する」にチェックを入れることを推奨するサイトがありますが、絶対にやめてください。チェックが入っている場合は必ず外してください。1900年1月1日(シリアル値が1)は本当は月曜日なのですが、曜日がずれたことによってExcel上では日曜日として扱われ、シリアル値1~7が日曜~土曜に対応しています。分かりませんが、WEEKDAY関数をはじめとする曜日の計算は、曜日を1日ずらしたことによって可能となっているのです。アメリカのカレンダーが日曜始まりであることとも一致します。1900年1~2月の曜日は正しく判定できませんが、1900年3月以降に関しては全く問題ありません。わえなびチャンネルhttp://www.youtube.com/c/waenavijpチャンネル登録をすると最新の動画をチェックできます。初心者向けの動画も大量にあります。平成三十年八月]スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。