- PCサポート
- 2023年5月20日
名刺サイズ用紙印刷に対応!キヤノンインクジェットプリンターラインナップ2023年度版
キヤノン2023年新モデルプリンター 毎年恒例のプリンター情報です。WebDre……
4月目前!進学、就職と新しい世界へと進む人であふれています。そこで勉強・仕事で使うであろうOfficeソフトである文書作成ソフトWord(ワード)と表計算ソフトExcel(エクセル)を使うことになる人も多いことでしょう。
WebDreamではパソコン操作サポートの仕事としてWordとExcelの講習を行ってきました。その講習でExcelの操作や数式につい説明をしてきましたが、日付の取り扱いについて気になったことががあります。
Excelを使う際によく使われる値として日付があるのですが、その日付の入力や計算にエクセル特有の「クセ」があり、戸惑う方が多いということです。
その日付情報とともによく使われる値として、時刻・時間があります。
日付情報と同じく時刻・時間のExcelでの取り扱いにクセがあり、入力や計算などで悩む方が多いようです。そこで今回はExcelで時刻・時間を扱い計算する「時刻関数」について書いてみようと思います。
まず時刻・時間データがExcelでどのように取り扱われているかを知っておく必要があります。
Excelで「セル」に入力されたものを【数値】と【文字列(数値以外)】と大きく2種類に判断するのですが、時刻・時間として入力された値をExcelは数値としてとらえ、かつ日付と同様【シリアル値】として認識しています。
Excelはそのシリアル値をもとに入力された値を、表示形式に従い時刻・時間として表示するようになっています。
上記の例では時刻の行に0:00から6時間ごとの時刻として6:00、12:00・・・と入力し、シリアル値の行は上の時刻の行で入力した値をシリアル値(セルの書式設定:標準)を表示しています。
セルに【0:00】や【6;00】と入力された時刻は時刻として表示される【シリアル値】で、6時間ごとに【0.25】ずつ増えるといった、1日(24時間)を1として取り扱う値と認識されています。
単純な例として出退勤管理として、出勤時刻・退勤時刻が入力されたタイムカードの時刻から実働時間を求めてみたいと思います。
実際のタイムカードの場合は労働基準法の規定に沿った計算が必要ですが、今回はExcelでの計算例として単純に退勤時刻から出勤時刻を引き、休憩時間は1時間を差し引く形で計算しています。
出勤状況として、上記の1日(月)を例にとると【出勤時刻8:30で、退勤時刻は16:30】なので、16:30-8:30と引き算し拘束時間として8時間で、休憩時間を1時間とすれば8時間から1時間を引き実働時間は7時間として求めています。
上記の実働時間のセルには【=D5-C5-TIME(1,0,0)】と数式が入力してあります。
休憩時間の1時間を引き算するにあたって、単純に1を引いてしまいそうですが、もし単純に1を減算するとどうなるかやってみます。
結果としてセルには【########】と表示されました。1時間のつもりで1を減算はできないことが分かったわけですが、理由を考えてみます。
表中には「退勤時刻ー出勤時刻ー1では計算できない」と記載していますが、計算はしているけれども負の値となっているため計算結果が正しく表示されない状態です。
基本的な考えとして、ある時刻と時刻の間の時間を求める場合に「大きな値(遅い時刻)-小さな値(早い時刻)」と、負(マイナス)にならないよう計算します。
セルの表示形式を1日の部分だけ標準にしてみます。エクセルでは時刻を1日を1としたシリアル値として認識しているので、【8:30は0.354167…】と割り切れない値で、【16:30は0.6875】となります。1時間を単純に1と考えてしまうと【0.6875-0.354167-1】と計算して結果は【-0.66667】と負の値になってしまいます。
計算の結果が【負:マイナス】の値となっているため、エクセルでは計算の結果が表示できず【######】となってしまうのです。
エクセルで時刻・時間計算を行ったときに【######】等自分が思ったものと違うものが表示されると、『なんかおかしい?まちがった?』と思ってしまいます。
こんな時にはすぐ計算式を削除したりせず、値が【負:マイナス】になっていないかなどを確認するように心がけましょう。
表示される結果には必ず原因があるはずです。その原因を確認してから次に進むことが大事だと思います。
今回のタイムカードの実働時間算出では、エクセルの関数【TIME】を使って休憩時間である1時間を表して計算を行っています。
TIME()関数は、引数(ひきすう)として【時・分・秒】を指定することで、指定したシリアル値を求めることができます。
1時間のシリアル値を求めるには=TIME(1,0,0)と入力します。
このようにTIME関数を用いて計算することで、最初の計算の結果のように実働時間を求めることができます。
もし休憩時間が50分であればTIME(0, 50, 0)と入力し、1時間20分であればTIME(1, 20, 0)と入力すれば計算できます。
一方休憩時間が一律で1時間ではなく、勤務日によって異なる場合場合は、出勤状況の表に【休憩時間】を入力できる部分を設けて計算すればよいでしょう。
作表の状況においては、出勤時刻として時刻データが8:30と1つのセルに入力されておらず、【出勤:時と出勤:分】のように別セルに入力されているような場合もあるかもしれません。
セルに入力されている値は、【8,30, 16, 30】という数値であって時刻データ(シリアル値)ではありません。そのため出勤時刻や退勤時刻をTIME関数でシリアル値にすることが必要になります。
休憩時間は1時間として考え【=TIME(E5, F5, 0)-TIME(C5,D5,0)-TIME(1, 0, 0)】と入力すれば実働時間を求めることができます。
日々の実働時間を求めることができたら、1か月の勤務時間の合計を求めてみましょう。
実働時間は【E5セルからE35セル】に求められているので合計はSUM関数を用いて、【=SUM(E5:E35)】で合計できるはずです。
この例では1カ月分の勤務時間を合計すると144時間となるようになっており、計算式を入力したのですが、E36セルには【0:00】と表示されてしまいました。
これはExcelで時間合計を求める際によく見られる事象で、Excelサポートの際に質問を受けることが多かった内容です。
実働時間を計算する際には特に問題がないのですが、算出された実動時間を合計した際にE36セルには、書式設定として【時刻】がまず設定されてしまいます。
計算の結果が【0:00】と表示されているセルの書式設定を確認すると、以下のようになっていました。
時刻の取り扱いなので、23時59分59秒の1秒後は0時0分0秒となります。
そのため、単純に書式設定が時刻対応となっている場合には24時となった時点で【0:00】になり、24時間を超える値の場合はその端数が表示されることになってしまいます。
セルの書式設定を【 [h]:mm:ss 】と変更します。サンプル部分に表示される値が変わっています。
実働時間の合計が144時間と表示されるようになりました。
Excelではシリアル値を使ってある時刻とある時刻の経過時間を求めたり、時間の合計を求めたりと計算ができるものの、慣れが必要な部分があります。
Excelの計算式・関数・表示形式を知らないと「おかしい・まちがった・結果がでない」と悩むことがありますが、時刻・時間といった値や日付データはよく使う値であることからも、しっかりとその特性を身に着けていただければと思っています。