- ベストアンサー
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倍し、後で足し合わせていますが、量も多いし面倒です。 この計算をもう少し簡潔に行うにはどうすればいいでしょうか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
=TIME(HOUR(C1),MINUTE(C1),SECOND(C1*2))
その他の回答 (4)
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倍して、分以上と足したものでいいんですよね?
お礼
これも自分では考え付かなかった計算式で、勉強になりました。 ありがとうございました。
- ka_na_de
- ベストアンサー率56% (162/286)
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」すればよいかと思います。
お礼
ANo.2の方と同じでシンプルでいいですね。 別シートに計算する方法も教えていただいてありがとうございます。 (ポイントは先着優先ですみません)
- zap35
- ベストアンサー率44% (1383/3079)
A列 B列 C列 0:03:18 1:49:27 C2の式は =B2-A2+MOD(B2-A2,"0:01:00") 通常の引き算の結果(1:46:09)の秒数だけ足し直して2倍にしています
お礼
ありがとうございます。 自分では考え付かなかった計算式で、勉強になりました。
私は、エクセルは一度も操作したことのない門外漢。 ですから、エクセルの関数は判りません。 よって、この回答が最適かどうかは大いに疑問。 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
お礼
早速のご回答ありがとうございます。 マクロにはうとくてちゃんと理解できないのが残念ですが勉強になります。
お礼
できました!シンプルでいいですね。 ご回答ありがとうございます。