質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

4回答

15986閲覧

excelの60進数で、計算を行う関数を教えてください

suban

総合スコア28

0グッド

0クリップ

投稿2017/02/08 07:07

編集2017/02/08 07:15

excelのセルに、2つの時間データがあるのですが、この2つのデータの時間差を求めたいのですが
(セルのデータは時間ですが、時分はコロンで区切られておりません)

<例1>
時間データ1 075523 (7時55分23秒)
時間データ2 075542 (7時55分42秒)

時間差 19 (19秒)

<例2>
時間データ1 230154 (23時1分54秒)
時間データ2 230204 (23時2分4秒)

時間差 10 (10秒)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

前提

「7時55分42秒」が「075542」という表記でしたので、常に6桁表記という認識で話を進めさせていただきます。

回答

結果についてですが、「時間差 19 (19秒)」という例を挙げていただきましたが、ここは具体的に19という秒を表す数値が欲しいのでしょうか?
それとも時間値「00:00:19」(値にすると0.00022)が欲しいのでしょうか?


結果が時間値でよいのなら話は簡単です。
まず「075542」という値を「07:55:42」という時間値に変換します。
これにはTIMEVALUE関数を利用します。

「075542」という値がA1セルに入っているとすると、
=TIMEVALUE(MID(A1,1,2)&":"&MID(A1,3,2)&":"&MID(A1,5,2))
という式で「07:55:42」という値が取得できます。

このように時間データ1・2をともに時間値1・2に変換してあげれば「時間値2 - 時間値1」の計算で「00:00:19」という時間値が取得できます。


結果を秒数で欲しい場合はさらにもうひと手間加える必要があります。

先の計算で求めた結果の時間値を秒数に変換する作業です。

時間値を秒数に換算するには、Hour関数、Minute関数、Second関数を利用します。

前述の結果の時間値がC1セルに格納されているとすると、
=(HOUR(C1)*60*24) + (MINUTE(C1)*60) + SECOND(C1)
という式で秒数が求められます。

単純に時間6024 + 分*60 + 秒の計算をしているだけです(^-^;


60進数の計算という見出しでしたが
・質問内容は単純な時間計算であったこと
・入力データが前ゼロ付きで純粋な数値形式とは思えなかったこと
から文字列を分解して時間計算する方法をご紹介しました。

参考になれば幸いです。

投稿2017/02/08 08:07

編集2017/02/08 08:12
jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

suban

2017/02/08 08:41

「00:00:19」という表示が欲しかったのですが 御指摘のとおりに修正すると、期待値が得られる事が 解りました。誠にありがとうございます。
suban

2017/02/09 00:09

ご指摘の通りでした。質問内容は不十分でしが 文字列データでしたので、文字列を分解して計算する方法が ベストでした。誠にありがとうございます
guest

0

ベストアンサー

##王道
ご質問にある時刻表記は標準的な書式ではないので、自分で分解し60進数に変換して通しの秒数(秒単位)にそろえてから、減算して差を求めることが王道でしょう。
「時間データ」が数値だとして、式で書くなら

=QUOTIENT(時間データ,10000)*3600+QUOTIENT(MOD(時間データ,10000),100)*60+MOD(時間データ,100)

で時間差(通しの秒数)が求まるでしょう。時間データが文字列であれば、MIDで時分秒要素を切り出しVALUEで数値化します。

QUOTIENT:商を求めます
MOD:余りを求めます
MID:文字列から部分文字列を取り出します
VALUE:文字列を数値化します

##別解
まだデータが入っていないようでしたら、時間データ(時刻)側のセル書式(ユーザー定義書式)に "HHmmss"、時間差(秒数)を表示するセル書式のほうに"[ss]"などとしておけば、単に引き算を書くだけで秒数が表示されます。セルへの入力は"7:55:23"のように、標準的な時刻表記で入力します。

投稿2017/02/08 07:41

編集2017/02/08 07:58
hsk

総合スコア728

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

suban

2017/02/08 08:13

ありがとうございます。得られた数値を比較する事で、時差を簡単に計算できました。
guest

0

まず数値を時分秒に分割しましょう。
時は数値を 10000 で割って端数を切り捨てたもの、分は数値を 100 で割って端数を切り捨て、さらに 100 で割った余り、秒は数値を 100 で割った余りです。

分割できたらこれを秒に直しましょう。時 を3600 倍したもの、分を 60 倍したもの、秒、これらの合計が数値を秒に直したものと言えます。

秒に直したら時間差を求めましょう。引き算で求まります。

時間差を求めたらそれを時、分、秒に分割しましょう。時は時間差を 3600 で割って端数を切り捨てたもの、分は時間差を 60 で割って端数を切り捨てたものをさらに 60 で割った余り、秒は時間差を 60 で割った余りです。

時分秒が求まり、それをもとの形式に戻すには、時を 10000 倍、分を 100 倍、秒、これらを合計してください。

これらは変数に入れながら段階的に処理するのが楽ですが、同じ計算が一つの計算式に何度も出てくるのが苦でなければ一度にできないことはありません。

投稿2017/02/08 07:34

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

suban

2017/02/08 08:11

詳細な解説を戴き、誠にありがとうございます。
guest

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問