よねさんのWordとExcelの小部屋|Excel(エクセル)講座の総目次|Excel(エクセル)関数の技:目次|曜日を表示する(曜日を計算する)
- 日付データから曜日を表示するにはいくつかの方法が考えられます。
- 表示形式を利用する
(こちらの方法が一般的だと考えます)
- 「2012/1/1」といった日付が入力してあるセルでは、表示形式を「yyyy/m/d (aaa)」とします。すると、2012/1/1 (日) と表示されます。
つまり、日付のデータが入っているセルの表示形式を aaa とか aaaa 、 ddd 、dddd とすれば曜日が表示されます。
-
| 表示形式 |
表示 |
| aaa |
日、月、火、水・・・ |
| aaaa |
月曜日,火曜日・・・.日曜日 |
| ddd |
Mon,Tue・・・Sun |
| dddd |
Monday,Tuesday・・・Sunday |
- 下図のように、A列に日付が入力されている時にB列に曜日を表示したいと思います。
- 解答例1
値をA列からもってきて、表示形式を変更する。
B1に =A1 とすればA列の日付が入ります。 表示形式を aaa とします。
このときのB列は日付データです(シリアル値ですので数値と考えてもよいでしょう)

- 解答例2
表示形式を使って曜日の文字列を返す。
B1に =TEXT(A1,"aaa") とします。 セルの表示形式は 標準 のままでOKです。
このときのB列の値は「文字列」になります。
- WEEKDAY関数を使って計算する
(計算の例として書いています。これ以降の数式をお勧めしているわけではありません。頭の体操・・・と考えてください)
- WEEKDAY関数は =WEEKDAY(シリアル値,[種類]) となりますが、種類を 1 または省略 すると、1 (日曜)〜 7 (土曜) の範囲の整数を返します。
つまり、=WEEKDAY("2012/1/1") とすると 1 が返ります。
- 解答例1
返る値が 1〜7 なので、これと曜日を関連付ければよい・・・と考えると・・・・
=CHOOSE(WEEKDAY(A1),"日","月","火","水","木","金","土") のような数式を作ることができます。
- ほかにも、さまざまな数式を作ることができます。
=INDEX({"日","月","火","水","木","金","土"},WEEKDAY(A1))
=VLOOKUP(WEEKDAY(A1),{1,"日";2,"月";3,"火";4,"水";5,"木";6,"金";7,"土"},2)
- 解答例2
おなじように、=MID("日月火水木金土",WEEKDAY(A1),1) とすることもできます。
- 解答例3
単に =WEEKDAY(A1) とすると、日付のシリアル値の「1」となる「1900/1/1」はExcelでは日曜日と設定されています。
というわけで、 B1に =WEEKDAY(A1) として、表示形式を aaa とすることでも表示できます。
- 解答例4
曜日は7日ごとに繰り返されるものですので、7で割った余りで判定しよう・・・ということも可能です。
ただし、土曜日が「0」となるので、ちょっと小細工が必要です。
B1セルに =MID("土日月火水木金",MOD(A1,7)+1,1) とします。
土から始めるところと、 +1の部分で調整しています。
- 注意事項
- なお、以上に書いている方法は1900/3/1以降で求めることができます。
Excelでは「1900/2/29」が存在しているため(実際は1900年は閏年ではありません)、1900/1/1〜2/29はズレを生じています。
この辺の日付を扱う時は注意してください。
よねさんのWordとExcelの小部屋|Excel(エクセル)講座の総目次|Excel(エクセル)関数の技:目次|曜日を表示する(曜日を計算する)
PageViewCounter

Since2006/2/27