- ベストアンサー
エクセル 時間計算(○○時間○○分)
初歩的ですみません。 すでに、○○時間○○分といった形で入力してしまいました。 合計を出したいのですが、文字列と認識してしまうためか?合計が出せません。 方法を教えてください。 また、今後10時間10分と入力せず、1010と入力すれば、表示は10時間10分と自動的に表示され、合計も出せる方法を教え下さい。 宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
"分"を置換で消去する(置換後の文字列を空欄にする)。 "時間"を置換で":"にする。 これで時刻に変換されます。 そのままで合計を出すと 時刻計算になってしまって 24時間以上は0に戻るので、 「書式」→「セル」→「表示形式」で [hh]:mm とします。 こうすると24時間以上の表示も可能になります。 また、表示形式で、 [hh]"時間"mm"分" とすれば、○○時間○○分と表示されます。 後者の質問は、にわかに思いつきません。 文字列にすれば別セル上で可能ですが、 その後数値に戻すのが…… 素直に10:10と入力してはいけませんか。
その他の回答 (1)
- KenKen_SP
- ベストアンサー率62% (785/1258)
ユーザー定義関数での解です。 <手順> 1. [Alt]+[F11]キー押下で、Visual Basic Editor が起動します。 2. メニューから[挿入]-[標準モジュール]をクリック 3. 開いたウィンドウに次のコードをコピー&ペースト 4. Visual Basic Editor を終了 Function ConvTime(Param As Variant) as Variant '“時間”や“分”カット If InStr(Param, "時間") > 0 Then Param = Replace(Param, "時間", "") If InStr(Param, "分") > 0 Then Param = Replace(Param, "分", "") ConvTime = Param If IsNumeric(Param) Then Select Case Len(Param) Case Is = 3:ConvTime = TimeSerial(Left(Param, 1), Right(Param, 2), 0) Case Is = 4:ConvTime = TimeSerial(Left(Param, 2), Right(Param, 2), 0) End Select Exit Function End If End Function 以上で、普通のワークシート関数のように、ConvTime関数が使用可能になります。例えば、A1セルに 8時間30分 のように入力されているとしたら、B1セルなど適当な作業用空セルに次の式を書き込みます。 =ConvTime(A1) これで文字列から“時間”や“分”がカットされ、時刻に変換された値が得られます。後はフィルで必要な行までコピーして下さい。最後にB1セルの結果をA1セルに値でペーストし、作業用セルを削除します。また、○時間×分という書式が希望であれば、ユーザー定義の書式を設定すれば良いでしょう。 >...1010と入力すれば、表示は10時間10分と自動的に表示され、合計も出せる方法... これは、Worksheet_Changeイベントに上記の関数を呼び出すコードを記述することで可能ですが、お勧めできません。ある程度VBAの知識が必要となります。
お礼
んー私にはちょっと高度のようです(T_T) でもいろいろな方法で覚えたいので、助かりました。 ありがとうございました。
お礼
大変わかりやすく、助かりました。 本当にありがとうございました。