dポイントプレゼントキャンペーン実施中!

1つのセルに例えば、「0700」と入力したら→「07:00」と表示させるには
どのような書式設定をすればいいのでしょうか?
教えてください。

A 回答 (7件)

みなさんこんばんは!



hiさんの追記のご質問は
実際入力されている数値(表示だけは00:00形式)
での合計
A(実数)(表示のみ)
1 0200 → 02:00 
2 0300 → 03:00
3 0400 → 04:00

とのことですから、集計時にシリアル値に変換する
必要があると思います!

結果
 =SUM(TEXT(A1:A3,"0!:00")*1)
配列数式なので数式バーにカーソルがある状態で
[Ctrl]+[Shift]+[Enter]で確定

上手くいけば
数式バーの表示は
 {=SUM(TEXT(A1:A3,"0!:00")*1)}
となっている筈です。
シリアル値なので書式設定は時刻にして下さい!
(24時間を超える場合はユーザー定義 [h]:mm)
    • good
    • 0

再びHitomiKuroseです。


強引に1つの式にしてみました。

=INT((A1+A2-INT(A1/100)*40-INT(A2/100)*40)/60)*100+MOD(A1+A2-INT(A1/100)*40-INT(A2/100)*40,60)

A1-INT(A1/100)*40でA1を分に直しています。A2も同様。
で、それを合計して、再び元の形式に戻してます。

表示形式は前述の00":"00にして下さい。
    • good
    • 0

再度説明させてもらいます。



>引数の部分がちょっとわからなかったので

ということなので・・・

SUM関数は、例えば、=SUM(A1:A10,B1:B10,DataTable,C1,15,100) のように、
範囲、A1:A10、B1:B10、DataTable、C1 の値と、実際の値、15、100 を加算すると書けます。

どうせ作るなら、SUMと同じにしようということで
 =SumTime(A1:A10,B1:B10,DataTable,C1,15,100)
とすれば、hi63さんの入力方法で色々な場所と固定値を時刻として加算できるようにしてあります。
    • good
    • 0

(A1)02:00


(A2)03:00
(A3)05:00

と入力されていたら、(A4)に=SumTime(A1:A3) とします。
(A4)の書式を(A3)と同じにすれば、10:00と表示されます。(実際は1000です)

時間、分を抜き出して、例えばB4、C4に書くとすれば
 時間は (B4)=INT(A4/100)
  分は (C4)=MOD(A4,100)
となります。

別の列を補助計算に使ってもいいんですが、入力が増えるたびに補助の数式が必要なので、直接合計してしまう主旨で作りました。
    • good
    • 0

SUM()の時分版のユーザー定義関数を作ってみました。



=SUM(範囲,範囲,値・・・) と同じように、=SumTime(範囲,範囲,値・・・)とします。
多分、SUM()と同じ機能です。範囲には範囲名も使えます。
合計時間と合計分を入力と同じ形式で返します。

標準モジュールに貼り付けます。
Public Function SumTime(rgTime As Range, ParamArray aryTime() As Variant)
  Dim Union_rg As Range '集計するセル範囲
  Dim rg As Range 'セル
  Dim hour_T, minute_T As Long '時間の計、分の計
  Dim ary As Integer '配列カウンタ

  Application.Volatile
  'SumTimeの指定値が範囲なら結合する。値なら集計する。
  Set Union_rg = rgTime
  For ary = 0 To UBound(aryTime())
    If IsNumeric(aryTime(ary)) Then
      'SumTimeに数値がセットされていた場合
      hour_T = hour_T + Int(aryTime(ary) / 100)
      minute_T = minute_T + (aryTime(ary) Mod 100)
    Else
      'SumTimeに範囲がセットされていた場合
      Set Union_rg = Union(Union_rg, aryTime(ary))
    End If
  Next
  '範囲指定部分の時、分を集計
  For Each rg In Union_rg
    hour_T = hour_T + Int(rg / 100)
    minute_T = minute_T + (rg Mod 100)
  Next
  '時分にする(60進数)
  hour_T = hour_T + Int(minute_T / 60)
  minute_T = minute_T Mod 60
  '表示形式をあわせる(時分の結合)
  SumTime = hour_T * 100 + minute_T
End Function

この回答への補足

回答ありがとうございます!
これはセルを時間と分に分けて入力してるんでしょうか?
引数の部分がちょっとわからなかったので
教えていただけますか。よろしくお願い致します。

補足日時:2001/08/04 16:06
    • good
    • 0

例えば、時間の足し算は残業時間を集計するときに必要になると思いますが、


数字と時間と時刻は意味合いが異なりますので注意して下さい。
では、HitomiKuroseさんの回答に補足させてもらいます。

現在、セルはhi63さんの希望通りに表示されている筈です。
でもツールバー下の計算式入力欄を良~く見ると、入力した数字がそのまま表示されている筈ですね。つまり表示形式が変わっただけで値は変わっていません。

説明します。
(時刻も含めて)時間60進数と12(又は)進数ですから計算が面倒です。
仮の計算結果を残す為にB、C列を利用します。
B1に =INT(A1/100) ・・・時間と
C1に =A1-(B1*100) ・・・分に切り分けます。
この式を該当する全ての行にコピーして貼り付けます。

仮にA1からA5までデータが入力されているとすれば
B6に =SUM(B1:B5)+INT(SUM(C1:C5)/60)・・・分合計の繰り上がりも含む時間
C6に =MOD(SUM(C1:C5),60)・・・分の合計を60で割った残り、つまり分になる

とします。これでセルB6には時間が、C6には分が表示されています。
そして計算結果を表示するセルA6は下記の様になります。
=B6*100+C6
表示形式を HitomiKurose の回答通りに 00":"00 と定義すれば出来上がりです。
    • good
    • 0
この回答へのお礼

ありがとうございました!
できました!私もあとで時間と分に分けないとダメという
ことに気付いてつまずいているところでした・・・。
これで助かります。ありがとうございました!

お礼日時:2001/08/04 15:54

実際に時刻として扱われるわけではありませんが、表示なら



セルの書式設定→表示形式→ユーザー定義
で、種類の欄に

00":"00

でどうでしょう。

この回答への補足

ありがとうございます。表示はできました!
書き忘れたのですが、さらに時刻の足し算もしたいのですが
どうしたらいいでしょう?
(A1)02:00
(A2)03:00
(A3)05:00
というようにA3に時刻の合計を出したい時は?
質問が足りなくて申し訳ありませんが教えてください!

補足日時:2001/08/04 11:49
    • good
    • 0

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