回答:
Steveが答えたように、Excelはユーザー入力12:33
を12h33mとして解釈します。Excelがユーザー入力を受け入れる方法のこの動作を変更することはできません。
コメントで述べたように、ユーザーは入力します12:33
が、12m33sを意味します。
計算の正しい値を取得するための回避策は次のとおりです。
12:33
)の書式を[h]:mm
=A1/60
セルB1に数式を入力します[m]:ss
表示される値は、A1とB1で同じでなければなりません。ただし、B1は実際の値になります。
TIMEVALUE
に使用します。
[h]
して[m]
解決策があります!このVBAコードをワークシートモジュールに配置します。例:
このコードを使用してください:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value < 0 Or Target.Value > 1 And Target.NumberFormat <> "h:mm" Then Exit Sub
Application.EnableEvents = False
Target.Value = Target.Value / 60
Target.NumberFormat = "mm:ss"
Application.EnableEvents = True
End Sub
データを入力する範囲を既にフォーマットしている場合は、代わりに次の行を最初の行として使用します。
If Target.Value < 0 Or Target.Value > 1 Then Exit Sub
これにより、値と形式が変更されることに注意してください-時間を入力するたびに-または0から1の間の値を入力してください!特定の列に制限する場合は、次の行を追加します。
If Target.Column <> 3 Then Exit Sub
または、この行を特定の範囲に制限します
If Intersect(Target, Range("A2:A100") Is Nothing Then Exit Sub
Durationにしたいセル/列をハイライトし、マウスを右クリックして「セルのフォーマット」を選択します。時間と分形式で期間を入力する場合は、「カスタム」に移動して「h:mm」を探します。秒も含める場合は、「h:mm:ss」をクリックします。その後、合計期間を合計することもできます。
お役に立てれば。
列Aに分を入力し、列Bに秒を入力するのが最善の方法です。列を合計できます。すべて通常の数値形式として。
次に、col Bの合計を60で割って60秒以上を秒に変換し、Col Aの合計にINTを追加し、残りをMOD BにMODのままにします。
代わりに、数式= (A1+(B1/60))
に10進数の分を与えることにより、col Cを10進数として持つことができます
。列Cの下部で合計を実行し、次のように数式を適用して小数部分を秒に変換C22
しC23
ます=MOD(C22,1)*60
。
次に、A23
式=INT(C22)
を入力して、の合計からの合計分を含む合計分を表示しC22
ます。
私は同じ問題を抱えていて、ここに私が見つけた解決策があります:TIME
関数を使用して式を入力します。これは、時間マトリックスを作成し、=TIME(H,M,S)
好きなようにフォーマットします。毎回0時間を入力する必要がありますが、これは数学ですが、これにより全体が無限に実行可能になります。
59
は、セルをとしてフォーマットします[MM]:SS
。Like:代わりに02:10:45
表示され130:45
ます。しかし、明らかにそれは入力に対して機能しません。