• ベストアンサー

エクセル 時間計算(○○時間○○分)

初歩的ですみません。 すでに、○○時間○○分といった形で入力してしまいました。 合計を出したいのですが、文字列と認識してしまうためか?合計が出せません。 方法を教えてください。 また、今後10時間10分と入力せず、1010と入力すれば、表示は10時間10分と自動的に表示され、合計も出せる方法を教え下さい。 宜しくお願いいたします。

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

  • ベストアンサー
  • anaguma99
  • ベストアンサー率59% (1620/2727)
回答No.1

"分"を置換で消去する(置換後の文字列を空欄にする)。 "時間"を置換で":"にする。 これで時刻に変換されます。 そのままで合計を出すと 時刻計算になってしまって 24時間以上は0に戻るので、 「書式」→「セル」→「表示形式」で [hh]:mm とします。 こうすると24時間以上の表示も可能になります。 また、表示形式で、 [hh]"時間"mm"分" とすれば、○○時間○○分と表示されます。 後者の質問は、にわかに思いつきません。 文字列にすれば別セル上で可能ですが、 その後数値に戻すのが…… 素直に10:10と入力してはいけませんか。

noname#8679
質問者

お礼

大変わかりやすく、助かりました。 本当にありがとうございました。

その他の回答 (1)

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

ユーザー定義関数での解です。 <手順> 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の知識が必要となります。

noname#8679
質問者

お礼

んー私にはちょっと高度のようです(T_T) でもいろいろな方法で覚えたいので、助かりました。 ありがとうございました。

関連するQ&A