• ベストアンサー

時間表示

エクセル2000を使っております 例えば「1234」と入力して「12:34」と表示させるのに「##":"##」とユ-ザ-定義手入れております ですがこの場合例えば12:30と12:35を足すと24:65と10進法で計算されてしまいます また表示を日付設定で「時刻」にすると24時間以上は24:30だと00:30となってしまいます そこで質問ですが 時間を足しても「分」は60進法で「時間」は24進法で無いユ-ザ-定義をご存じでしたらお教え願いたいと思います よろしくお願いいたします

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

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

数値1234を表示形式で「12:34」と表示させても時刻の情報に変換さ れるわけではありませんから、時刻としての演算は出来ません。 ちゃんと「12:34」と入力し、表示形式を[h]:mmとしてやれば、素直 に演算出来て24時間以上の場合もご希望通りの表示をしてくれます よ。

hiroki-73
質問者

お礼

有難うございます 大変参考になりました

その他の回答 (4)

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

時刻入力の手間を省力化したのですね。VBAでやってみましょう。 1. EXCELのシート選択タブ上のシート上で右クリック 2. [コードの表示]クリック 3. Visual Basic Editor が起動します 4. 開いたページに【以下コード】の次行から終わりまでをコピペ 5. Visual Basic Editor を閉じる これで、セルA1:E100およびG1:G5に数字を入力すると次のようにデータ変換を自動で行います。 1234 → 12:34、2450 → 24:50、930 → 9:30 変換されたデータは時刻型のデータですから、当然集計も可能です。 また、変換処理を行うセル範囲を変更するにはコードにある strRange = "A1:E100,G1:G5" "A1:E100,G1:G5"の部分を書き換えます。複数の範囲を指定するときはカンマでつなぎます。 【以下コード】 Private Sub Worksheet_Change(ByVal Target As Range)   Dim strRange As String   '変更を許可するセル範囲を文字列で定義   '範囲を変える場合は次行を修正   strRange = "A1:E100,G1:G5"   On Error GoTo ErrorHandler   '変換許可範囲内のセルか   If Not (Intersect(Target, Range(strRange)) _     Or Target.Count = 1) Then Exit Sub   '時刻に書換え   With Application     .EnableEvents = False     .ScreenUpdating = False   End With   With Target     If Len(.Value) < 5 Then       .NumberFormatLocal = "[h]:mm"       .Value = CDate(Str2Time(Format(Target, "0000")))     End If   End With ErrorHandler:   With Application     .EnableEvents = True     .ScreenUpdating = True   End With   Exit Sub End Sub '文字列から時刻へ変換するユーザー定義関数 Private Function Str2Time(strParam$) As Variant   Dim HH$, MM$   If IsNumeric(strParam) And Len(strParam) = 4 Then     HH = Left$(strParam, 2)     MM = Right$(strParam, 2)     Str2Time = TimeSerial(CInt(HH), CInt(MM), 0)   Else     Str2Time = strParam   End If End Function

  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.4

質問からはずれますが VBAをつかってみましょか Function addtm(tm1 As Long, tm2 As Long) As Long Dim tmp As Long tmp = Int(tm1 / 100) * 60 + (tm1 Mod 100) + Int(tm2 / 100) * 60 + (tm2 Mod 100) addtm = Int(tmp / 60) * 100 + (tmp Mod 60) End Function =addtm(1230,1235) で2505という値が返ってきます (12:30 + 12:35 -> 25:05)

hiroki-73
質問者

お礼

有難うございます 大変参考になりました

  • kuro96jp
  • ベストアンサー率39% (93/238)
回答No.2

ユーザー定義で[hh]:mmと入力すると大丈夫ですよ。

hiroki-73
質問者

お礼

有難うございます 大変参考になりました

回答No.1

Wizard_Zeroと申します。 [hh]:mm でご希望通りになります。 ただし、「1234」と入力しても、それは時刻ではなく数値です。ちゃんと「12:34」と入力しないと時刻として認識してくれません。

hiroki-73
質問者

お礼

有難うございます 大変参考になりました

関連するQ&A