【エクセル時短】は「少しでも早く仕事を終わらせたい!」というビジネスパーソンのみなさんに、Excelの作業効率をアップするワザをお届けする連載です。毎週木曜日更新。
注目・最新の記事一覧
時間を引き算したときの落とし穴を回避
Excelで時間計算をしたとき、結果が「######」と表示された経験はありませんか?
例えば、ある業務の作業時間が、何らかの改善によって5分から3分に短縮されたとします。改善後と前を比較(引き算)したとき、-2分という結果を期待しますが、Excelでは正しく表示できません。これは、Excelの内部で時刻を表す数値が「シリアル値」として扱われているために起こります。
【エクセル時短】第112回では、こうしたマイナスの時間が表示できない問題の回避方法を紹介します。関数を組み合わせる方法のほか、[Excelのオプション]を変更する方法も見ていきましょう。
3つの関数でマイナスの時間を表示する
ここでは例として、複数の作業時間を「新方式」と「従来方式」で比較した表を用意しました。以下の画面のセルD2には、セルB2(新方式)からセルC2(従来方式)を引く数式が入力されていますが、「######」と表示されています。
セルD2に「=B2-C2」入力した状態です。マイナスの時刻はエラー(######)になっています。
Excelの標準設定では、マイナスのシリアル値を時刻(時間)として表示できません。そこで「TEXT」(テキスト)、「ABS」(アブソリュート)、「IF」(イフ)の3つの関数を組み合わせて解決します。
ABS関数で数値の絶対値を求めて、TEXT関数で時刻の表示形式を整えます。時刻がマイナスかどうかの判断は、IF関数で行います。3つの関数の構文を確認してから、実際の手順を見ていきます。
TEXT
(値, 表示形式)
文字列に変換したい数値を引数[値]に、数値の表示形式を引数[表示形式]で指定します。引数[表示形式]には書式を表す記号を「"」(ダブルクォーテーション)で囲んで記述します。
ABS
(数値)
引数[数値]に絶対値を求めたい数値を指定します。
IF
(論理式, 真の場合, 偽の場合)
引数[論理式]には、真(TRUE)か偽(FALSE)を判断する式を指定します。引数[真の場合]には[論理式]が条件を満たす場合の値、[偽の場合]には[論理式]が条件を満さない場合の値を指定します。
13つの関数を組み合わせて入力する
エラーになっていたセルD2に、「=TEXT(ABS(C2-B2),IF(C2>B2,"-hh:mm:ss","hh:mm:ss"))」という数式を入力します。
=TEXT(ABS(C2-B2),IF(C2>B2,"-hh:mm:ss","hh:mm:ss"))
この数式は、セルC2からB2を引いた値の絶対値を求めて、セルC2の値がセルB2の値よりも大きければマイナスを追加した書式(-hh:mm:ss)、そうでなければプラスの書式(hh:mm:ss)を設定する、という意味になっています。
2マイナスの時間を表示できた
マイナスになる時間計算の結果を正しく表示できました。フィルハンドルをドラッグして、関数式をセルD6までコピーしましょう。
HINT[Excelのオプション]の変更には注意が必要
Excelでマイナスの時間を表示するには、[Excelのオプション]の設定を変更する方法もあります。[Excelのオプション]の[詳細設定]で、[1904年から計算する]にチェックマークを付けるだけです。
しかし、シリアル値の開始が「1900/1/1」から「1904/1/1」に変更されるため、入力済みの日付が変更されてしまいます。すでに日付のデータが入力されているファイルでは、この方法は避けるべきです。
[ファイル]-[オプション]の順にクリックして[Excelのオプション]を表示し、[詳細設定]にある[1904年から計算する]にチェックマークを付けます。
例えば、「2019/6/1」のシリアル値は「43617」です。Excelは日付をシリアル値で管理しているため、先ほどの[1904年から計算する]の設定を変更すると、「2023/6/2」のように4年と1日ずれてしまいます。
「2019/6/1」と入力した状態です。標準設定では、シリアル値は「43617」となっています。
[1904年から計算する]に設定を変更すると、シリアル値の「43617」は変わらず、日付が「2023/6/2」に変わっています。