- ベストアンサー
時間表示
エクセル2000を使っております 例えば「1234」と入力して「12:34」と表示させるのに「##":"##」とユ-ザ-定義手入れております ですがこの場合例えば12:30と12:35を足すと24:65と10進法で計算されてしまいます また表示を日付設定で「時刻」にすると24時間以上は24:30だと00:30となってしまいます そこで質問ですが 時間を足しても「分」は60進法で「時間」は24進法で無いユ-ザ-定義をご存じでしたらお教え願いたいと思います よろしくお願いいたします
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
数値1234を表示形式で「12:34」と表示させても時刻の情報に変換さ れるわけではありませんから、時刻としての演算は出来ません。 ちゃんと「12:34」と入力し、表示形式を[h]:mmとしてやれば、素直 に演算出来て24時間以上の場合もご希望通りの表示をしてくれます よ。
その他の回答 (4)
- KenKen_SP
- ベストアンサー率62% (785/1258)
時刻入力の手間を省力化したのですね。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)
質問からはずれますが 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)
お礼
有難うございます 大変参考になりました
- kuro96jp
- ベストアンサー率39% (93/238)
ユーザー定義で[hh]:mmと入力すると大丈夫ですよ。
お礼
有難うございます 大変参考になりました
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
Wizard_Zeroと申します。 [hh]:mm でご希望通りになります。 ただし、「1234」と入力しても、それは時刻ではなく数値です。ちゃんと「12:34」と入力しないと時刻として認識してくれません。
お礼
有難うございます 大変参考になりました
お礼
有難うございます 大変参考になりました