いきなり答える備忘録

Google Workspace(旧G Suite)・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)マイナスの時間(時刻)から時・分・秒を取得する

 Googleスプレッドシートで、マイナスの時間(時刻)から時・分・秒の値を取得する方法についてです。
 値はいずれもマイナスの値として取得するものとします。

  • 「=SIGN(時間)*HOUR(ABS(時間))」といった式によりマイナスの時間(時刻)からマイナスの時・分・秒を取得できます。
  • ゼロやプラスの時間(時刻)からも正しく時・分・秒を取得できます。

手順

 Googleスプレッドシートではマイナスの時間(時刻)を入力することができます(詳しくはこちらの記事でも触れています)。
 しかし画像のように、この値からHOUR/MINUTE/SECOND関数で時・分・秒を取得しようとすると…


 すべてエラーになります。
 これらの関数はマイナスの時間(つまりマイナスのシリアル値)を扱うことができないのです。


 そこで次のような式に変えてみます。

 C3~E3セル

=SIGN(B3)*HOUR(ABS(B3))
=SIGN(B3)*MINUTE(ABS(B3))
=SIGN(B3)*SECOND(ABS(B3))

 「ABS(B3)」とすることでB3セルの値(時間)を一旦プラスのシリアル値に変えて、そこから時・分・秒を取得し、最後に符号を加えるというわけです。


 実行した様子です。確かに時・分・秒の値を取得できています。


 そのまま式を下方にコピーした結果です。
 「0:00:00」やプラスの時間(時刻)からも、正しく時・分・秒を取得できているのが分かります。