Excel講座

日付・時間

本章で用いる実習用ファイル

Excelは日付・時刻をシリアル値という数値データとして扱う。このシリアル値は1900/1/0を0とした連番である。

1日が「1」なので、時間(時:分:秒)は小数となる。

ABC
1単位シリアル値
21日1
41時間0.041666667
51分0.000694444
61秒1.16E-05
7
8今日の日付シリアル値
92024/5/1945431
10

これでは人間には訳が分からないので、数値の書式で人間に分かるように表示させる。

日付

表示形式

西暦年
  • yyyy…4桁(ex. 1995)
  • yy…2桁(ex. 95)
元号
  • ggg…漢字(ex. 平成)
  • gg…漢字1字(ex. 平)
  • g…英字1字(ex. H)
元号年
  • ee…必ず2桁で表示(ex. 07)
  • e…1桁表示あり(ex. 7)
月(数字)
  • mm…必ず2桁で表示(ex. 07)
  • m…1桁表示あり(ex. 7)
月(英字)
  • mmm…英字3字(ex. Jul)
  • mmmm…英字(ex. July)
  • mmmmm…英字1字(ex. J)
  • dd…2桁の日(ex. 03)
  • d…1桁の日(ex. 3)
曜日
  • ddd…英字3字(ex. Sun)
  • dddd…英字(ex. Sunday)
  • aaa…漢字1字(ex. 日)
  • aaaa…漢字(ex. 日曜日)
課題:表示設定(xlsx形式)

シリアル値が表示例になるように書式を設定せよ。

ABC
1シリアル値36772
2
3表示例12000/09/03
4表示例29月3日(日)
5表示例3平成12年9月3日 日曜日
6

日数計算

2000/9/3を基点として日数計算をする。

日数計算
ABCD
1経過日数シリアル値日付表示
20367722000/9/3
335=$B$2 + A3=C3
4-365=$B$2 + A4=C4
5-40000=$B$2 + A5=C5
68659=$B$2 + A6=C6
7

日付は高々連番の数値なので、足し算も引き算も普通にできる。計算した結果の表示書式を日付形式にすると当然月・年も跨げている。閏年の考慮もしてくれる(2000年は閏年)。

表示
ABCD
1経過日数シリアル値日付表示
20367722000/9/3
335368072000/10/8
4-365364071999/9/4
5-40000-3228#########
68659454312024/5/19
7

負の値は日付とは扱えない(セルC5の表示が「########」になる)。つまりExcelでは1900/1/1以前は日付計算できない。

課題:日数計算(xlsx形式)

各メンバーの誕生日から今日(2024/5/19)までの日数を計算して、表を完成させよ。

生まれてからの日数
ABCD
12024/5/19現在
2
3誕生日日数
4小片1998/11/5
5山岸1998/11/24155405
6新沼1999/10/20155075
7谷本1999/11/16155048
8岸本2000/4/1154911
9浅倉2000/9/3154756
10小野2000/9/29154730
11小野田2001/12/17154286
12秋山2002/7/29154062
13

曜日

日付(シリアル値)から曜日を表示するだけなら書式設定で行う。

曜日
ABCDEF
1日付曜日数値曜日表示イベント
22024/5/1=A2=MOD(A2,7)=MOD(A2,7)=IF(D2=1,"休み","")
32024/5/25
42024/5/36
72024/5/40
52024/5/51休み
62024/5/62
72024/5/73
82024/5/84
92024/5/95
10

毎日曜日に「休み」と表示したいとする。このとき、B列を参照して=IF(B2="日","休み","")と式を立てても上手くいかない。曜日固有の値を取得したいときは7で除した余り(MOD)を用いる。日曜日なら「1」となる。

日付関数

シート操作したときの日付:TODAY()

TODAY関数は現在の日付をシリアル値で返す(引数はない)。

シートに何らかの操作をしたときに再計算され、そのときの日付となる。入力した翌日にファイルを開くと、翌日の日付となる。

ABCDE
1記入日=TODAY()
2
3品目単価数量小計
4
5
6

TODAY関数は記入した日付を記録するための関数ではない(随時更新されるから)。

実用的な使い方としては、他項目を記入完了後、そのまま印刷ないしPDF化すると出力先には記入日が記録される。またシート上で値を随時更新するのではなく、シート記入日を記録したいときには「=TODAY()」入力後、Enterキーを押す代わりにF9キーを押す。すると関数ではなく、そのときの日付のシリアル値が入力される。

TODAY関数の効果的な使い方としては、常に最新の年齢をデータとして表示する、など動的なデータ更新を行うケースである。

年・月・日を実数で返す:YEAR(シリアル値), MONTH(シリアル値), DAY(シリアル値)
  • YEAR関数はシリアル値から「年」を数値として返す関数である。
  • MONTH関数はシリアル値から「月」を数値として返す関数である。
  • DAY関数はシリアル値から「日」を数値として返す関数である。
ABC
1今日2024/5/19
2
3=YEAR(B1)
4=MONTH(B1)
5=DAY(B1)
6
年月日からシリアル値を返す:DATE(,,)

DATE関数は,,を指定すると、その日付を表すシリアル値を返す関数である。

ABC
1シリアル値=DATE(B3, B4, B5)
2
32024
45
519
6
課題:貸出期間(xlsx形式)

指定された貸出期間に従って返却期日を表示する表を完成させよ。なお貸出期間の数字が変更されれば、返却期日も変化するようにせよ。

ABCD
1貸出日2024/5/19
2
3貸出期間返却期日
42週間
53ヶ月
61
7

時間

表示形式

時間(h):分(m):秒:(s)の組み合わせで設定する。

  • hh, mm, ssなら必ず2桁で表示(ex.01:05:06)
  • h, m, sなら1桁表示あり(ex.1:5:6)
  • [] ([hh][h][mm][m][ss][s])で括ると24時間・60分・60秒を超えた時間を表示
実用的な組み合わせ例(25時間3分9秒)
  • hh:mm:ss→01:03:09
  • hh:mm→01:03
  • h:mm:ss→1:03:09
  • [hh]:mm:ss→25:03:09

時間計算

日付と異なり、時間(時:分:秒)は全て固定値で換算できるので、四則演算だけでできる。

  • 1日…「1」
  • 1時間…「1/24」
  • 1分…「1/24/60」
  • 1秒…「1/24/60/60」
東海道新幹線の駅間所要時間
ABCDE
1駅名時刻所要時間
2京都発7:59
3名古屋8:56=B3 - B2=C2*24*60
4浜松9:440:4848
5静岡10:190:3535
6新横浜11:281:0969
7品川11:400:1212
8東京11:470:077
9
課題:実働時間(xlsx形式)

始業から終業までの時間から休憩時間を除いた実働時間(実数)に時給を掛けて一日の支給額が決まる。

表より、実働時間と支給額の計算をせよ。

5/19(日)分バイト実績
ABC
1始業9:25
2終業17:49
3休憩(分)55
4実働
5時給1050
6支給額
7

課題:年齢計算(xlsx形式)

各メンバーの誕生日から今日(5/19)現在の年齢を計算して、表を完成させよ。

誕生日
ABCD
1現在
2
3誕生日年齢
4小片1998/11/5
5山岸1998/11/2425
6新沼1999/10/2024
7谷本1999/11/1624
8岸本2000/4/124
9浅倉2000/9/323
10小野2000/9/2923
11小野田2001/12/1722
12秋山2002/7/2921
13

年だけの引き算では、その年の誕生日前なのかあとなのかが分からない。誕生日前後で年齢を変えるために、以下の計算をする。

  1. 日付を8桁の数値に変換する。
    • 2024/5/19→20240519
    • 1998/11/5→19981105
  2. 二つの数値の引き算をする。
    • 20240519 - 19981105
      →259414
  3. 10,000で割り、小数点以下を切り捨てる。
    • 25

課題:給与計算(xlsx形式)

以下の条件にしたがって、表を完成させ、給与支払額を計算せよ。

条件
  • 始業時刻」から「退社時刻」までの時間をから昼食休憩時間を除いた時間を「勤務時間」とする。
  • 「始業時刻」以前に出社しても「勤務時間」には含まれない。
  • 終業時刻以降の勤務は「残業時間」とする。
  • 「正規時間」とは「勤務時間」と「残業時間」の差である。
  • 出社していない日の勤務時間欄などは空白にする。
  • 土曜日、日曜日の支払額は平日の5割増し
  • 支給額の小数点以下は日ごとに切り捨て。
ABCDEFGHI
1始業時刻9:00
2終業時刻17:45
3休憩時間(分)45
4正規時給2200
5残業時給2970
6
7日付曜日出社時刻退社時刻勤務時間正規時間残業時間支給額
811月1日
911月2日8:5516:356:506:500:0022550
1011月3日9:3519:209:007:251:3531528
1111月4日9:0017:458:008:000:0017600
1211月5日9:2018:508:457:401:0520084
1311月6日8:5519:209:358:001:3522302
1411月7日
1511月8日9:3017:006:456:450:0014850
1611月9日8:5515:005:155:150:0017325
1711月10日
1811月11日10:0017:306:456:450:0014850
1911月12日
2011月13日11:0018:457:006:001:0016170
2111月14日8:5020:0010:158:002:1524282
2211月15日
2311月16日
2411月17日10:0017:457:007:000:0023100
2511月18日9:0017:458:008:000:0017600
2611月19日8:4515:305:455:450:0012650
2711月20日
2811月21日
2911月22日11:0015:003:153:150:007150
3011月23日9:0017:458:008:000:0026400
3111月24日9:0018:459:008:001:0030855
3211月25日
3311月26日
3411月27日8:5019:009:158:001:1521312
3511月28日8:5017:007:157:151:0015950
3611月29日
3711月30日9:0018:509:058:001:0531226
38合計144:45133:5510:50387784
39

課題:万年カレンダー(xlsx形式)

万年カレンダーを作成せよ。

セルB1に年、セルD2に月を入力すると、指定された年月のカレンダーを生成する。

ABCDEFGH
120245
2
3
41234
5567891011
612131415161718
719202122232425
8262728293031
9
10
ABCDEFGH
120246
2
3
41
52345678
69101112131415
716171819202122
823242526272829
930
10
セルに出力するのはシリアル値

セルにはシリアル値で日付を出力する。

表示形式で「日」のみを表示する。

最初のセル(A4)
[指定年月初日のシリアル値]-[指定年月初日の前日の曜日番号(シリアル値を7で割った余り)]
以降のセル
前のセルに数字を1ずつ加えていく
当月以外のセルを空白にする(発展)

余力があれば…。

セルにブランク("")を出力するのではなく、値(シリアル値)を出力した上で表示設定で空白に見えるようにする。その際「条件付き書式」を用いる。

  • 当月初日より前
    または
  • 当月の翌月初日以降

なら、文字は白(背景と同じ色)