• ベストアンサー

Exelで時刻計算(秒の数値のみを2倍に)

start    stop    time 0:03:18  1:49:27  1:46:09 のようにスタートからストップまでのタイムを計算したいのですが、問題は秒の数値が0-30までの2秒単位の数値であることです。 実際のタイムは秒数を2倍して、以下のようになります。 start    stop    time 0:03:36  1:49:54  1:46:18 今のところ、0:03:00と0:00:18のように時・分と秒とを分けて入力し直して秒数だけを2倍し、後で足し合わせていますが、量も多いし面倒です。 この計算をもう少し簡潔に行うにはどうすればいいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

=TIME(HOUR(C1),MINUTE(C1),SECOND(C1*2))

fishsong
質問者

お礼

できました!シンプルでいいですね。 ご回答ありがとうございます。

その他の回答 (4)

noname#133757
noname#133757
回答No.5

start時刻が入るセルをA1、stop時刻が入るセルをA2、時間が入るセルをA3として、セルA3に以下のような数式を入れたらいかがでしょうか? =INT(A2*24*60)/(24*60)+MOD(A2,1/(24*60))*2-(INT(A1*24*60)/(24*60)+MOD(A1,1/(24*60))*2) ちょっと複雑ですが、セルA1とセルA2の分未満を2倍して、分以上と足したものでいいんですよね?

fishsong
質問者

お礼

これも自分では考え付かなかった計算式で、勉強になりました。 ありがとうございました。

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.4

A2セルに 0:03:18 と入力されているなら、 A3セルに =TIME(HOUR(A2),MINUTE(A2),SECOND(A2)*2) と入力し、「書式」「セル」「表示形式」を時刻に設定すれば 0:03:36 と表示されると思います。 もし、 たくさんのデータがあるのであれば、別のシートで計算してみては どうでしょうか? 例えば、元のデータがSheet1のA2セル以降にあったとしたら、 別のシートのA2セルに =TIME(HOUR(Sheet1!A2),MINUTE(Sheet1!A2),SECOND(Sheet1!A2)*2) と入力し、以降の必要なセルにコピー&ペーストします。 うまく参照・計算されていれば、 全体を「コピー」して、同じところで「形式を選択して貼り付け」で 「値」にして「OK」すればよいかと思います。

fishsong
質問者

お礼

ANo.2の方と同じでシンプルでいいですね。 別シートに計算する方法も教えていただいてありがとうございます。 (ポイントは先着優先ですみません)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

A列    B列    C列 0:03:18  1:49:27 C2の式は =B2-A2+MOD(B2-A2,"0:01:00") 通常の引き算の結果(1:46:09)の秒数だけ足し直して2倍にしています

fishsong
質問者

お礼

ありがとうございます。 自分では考え付かなかった計算式で、勉強になりました。

noname#140971
noname#140971
回答No.1

私は、エクセルは一度も操作したことのない門外漢。 ですから、エクセルの関数は判りません。 よって、この回答が最適かどうかは大いに疑問。 start______stop ____time 0:03:18___1:49:27___1:46:09 0:03:36___1:49:54___1:46:18 一応、エクセルで計算させたののコピペです。 a3=hmmss(A2) b3=hmmss(B2) c3=hmmss(B2)-hmmss(A2) 計算式は、このようです。 hmmss() などという関数はありません。 以下のように標準モジュールで自作したものです。 h、mm、ss の文字列を3つに分割し ss を倍して合成しているだけです。 エクセルの関数でも可能と推察されますが、一度、作れば標準モジュールが便利です。 Option Explicit Public Function hmmss(ByVal T) As Variant   Dim NewT As String      NewT = Format(T, "h:mm:ss")   hmmss = CDate(CutStr(NewT, ":", 1) & ":" & CutStr(NewT, ":", 2) & ":" & CutStr(NewT, ":", 3) * 2) End Function Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function

fishsong
質問者

お礼

早速のご回答ありがとうございます。 マクロにはうとくてちゃんと理解できないのが残念ですが勉強になります。