重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

グーグルクロームの…
スプレッドシートにて、表示形式で「1000」と入力すると「10:00」となる時間表示の設定にした際に

例えば時間計算をする時
セルA1に1000と入力(表示上は10:00)、次にセルA2に1200と入力(表示上は12:00)とした場合、
セルA3へ経過した時間もしくは所要時間を2:00と表示させるやり方はありますか?

時間を計算するところまではできるのですが、表示形式を設定した為に、実際に入力されてる値が異なる為に正しい計算されません。

質問者からの補足コメント

  • すみません。
    質問を書き間違えてました…


    グーグルクロームの…
    スプレッドシートにて、表示形式で「1000」と入力すると「10:00」となる時間表示の設定にした際に

    例えば時間計算をする時
    セルA1に1000と入力(表示上は10:00)、次にセルA2に1230と入力(表示上は12:30)とした場合、
    セルA3へ経過した時間もしくは所要時間を2.50と表示させるやり方はありますか?

    が、正しい質問でした。
    もしよかったら再度ご回答頂ければ幸いです。

      補足日時:2018/01/07 01:28

A 回答 (6件)

No.3・4です。



もしかして給与の時間計算などで使いたいのですかね?

A1・A2セルの表示形式はユーザー定義から
00":"00
としておきます。

A3セル(セルの表示形式は 標準のまま)に
=INT((A2-A1)/100)+MOD(A2-A1+IF(MOD(A1,100)>MOD(A2,100),60),100)/60

としてみてはどうでしょうか?

※ 当然下二桁は60以上の入力がないようにしてください。

※ 給与計算などは15分とか30分単位で切り捨てたりするコトが多いと思いますが
その場合は FLOOR関数などを併用してください。m(_ _)m
    • good
    • 0

式でもちろんできますが、初めから「:」も含めてちゃんと時刻で入力した方が結果的に早くて簡単になると思いますよ。

    • good
    • 0

No.3です。



投稿後気づいたのですが、
Excelではなく、スプレッドシートと書いてありますね。

スプレッドシートは使ったことがないので
前回のVBAが動くかどうかは判りません。

どうも失礼しました。m(_ _)m
    • good
    • 0

こんばんは!



すでに回答があるようにA1~A3のセルの表示形式をユーザー定義から
00":"00
とすればできそうですが、
仮にA1が 958 A2が 1256 のような場合
02:98
のように表示される不具合が生じますね。

そこでVBAになりますが、一案です。
A1・A2そのものを時刻のシリアル値にする方法はどうでしょうか?

A3セルの表示形式はユーザー定義から
[h]:mm
としておき、
=A2-A1
という数式を入れておきます。

以上の下準備ができた上で
画面左下の操作したいシート見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
A1・A2セルに数値データを入力してみてください。

Private Sub Worksheet_Change(ByVal Target As Range) '//この行から//
If Intersect(Target, Range("A1:A2")) Is Nothing Or Target.Count > 1 Then Exit Sub
With Target
If .Value <> "" Then
If IsNumeric(.Value) Then
If Int(.Value / 100) < 25 And .Value Mod 100 < 60 Then
If .NumberFormatLocal = "G/標準" Then
.NumberFormatLocal = "[h]:mm"
End If
Application.EnableEvents = False
.Value = TimeSerial(Int(.Value / 100), .Value Mod 100, 0)
Application.EnableEvents = True
Else
.NumberFormatLocal = "G/標準"
MsgBox "入力値が不正です。"
.Select
End If
End If
End If
End With
End Sub '//この行まで//

※ 細かい検証はしていませんので
不具合があればごめんなさい。m(_ _)m
    • good
    • 0

>セルA1に1000と入力(表示上は10:00)、次にセルA2に1200と入力(表示上は12:00)とした場合、


>セルA3へ経過した時間もしくは所要時間を2:00と表示させるやり方はありますか?

こちらの例示の場合は引き算で特に問題なくご希望の結果になると思いますけど?
それよりも、A1が11:50でA2が12:45とかの方が困りませんか?
    • good
    • 0

セルA1,A2,A3に下記の表示形式設定を行います。



[表示形式]→[数字]→[表示形式の詳細設定]→[カスタム数値形式]で
「00":"00」を適用

セルA1に1000と入力。
セルA2に1200と入力。
セルA3に=A2-A1と入力。

これで、セルA3に2:00と表示されます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!