いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)24時間以上の時間を表示する

 Googleスプレッドシートで、「25:34:12」といったように24時間以上の時間を表示する方法についてです。

  • 適用する範囲を選択した状態でメニューから「表示形式」→「数字」→「経過時間」と選択すると、24時間以上の時間が表示できます。
  • カスタム数値形式で「[h]:mm:ss」と設定する方法もあります。
  • ただしHOUR関数で24以上の数値を取得することはできません。そこでTEXT関数を用いる対策があります。

手順

24時間以上の時間の表示

f:id:accs2014:20200612003749p:plain:right:w450

 いくつかの時間の値が並んでいます。これらをSUM関数で合計したところ……

f:id:accs2014:20200612003753p:plain:right:w450

 明らかに合計より短い時間が表示されてしまいました。
 これは24時間が1日に繰り上がってしまってしまい、残った4時間余りの時間が表示されているためです。

 

 そこで24時間以上の時間をそのまま表示するには、対象とする範囲(ここではC6セル)を選択した状態でメニューから「表示形式」→「数字」→「経過時間」と選択します。

f:id:accs2014:20200612003758p:plain:w700



f:id:accs2014:20200612003803p:plain:right:w450

 これで24時間以上の時間として表示されます。

 

f:id:accs2014:20200612003806p:plain:right:w450

 また、メニューから「表示形式」→「数字」→「表示形式の詳細設定」→「カスタム数値形式」と進んで、ダイアログ上で「[h]:mm:ss」という形式を設定する方法もあります。時間を常に2桁表示したいときは「[hh]:mm:ss」とします。

 ちなみにこの表示形式によりマイナスの時間を表示することもできます。
 これについては次の記事でも触れてます。

www.officeisyours.com

24時間以上の時間の取得

f:id:accs2014:20200612003810p:plain:right:w550

 上記の例で、さらにE6セルに「=HOUR(C6)」と入力してみると、結果は「4」となり「28」にはなりません。一見不自然ですが、表示形式とともにHOUR関数の結果が変わるのも変な感じですので、これは仕方がありません。
 ここで「28」という結果を得るには、次のような式を入力するのが1つの方法です。

=VALUE(TEXT(C6,"[h]"))

 TEXT関数により、つまり表示形式の考え方に沿って「28」という文字列を生成し、それをそのまま数値に変換するというわけです。
 なおExcel風に「=24*DAY(C6)+HOUR(C6)」とやると正しい値になりませんので注意が必要です(シリアル値と日付の対応付けが異なるため)。