プロが教える店舗&オフィスのセキュリティ対策術

初歩的ですみません。

すでに、○○時間○○分といった形で入力してしまいました。
合計を出したいのですが、文字列と認識してしまうためか?合計が出せません。
方法を教えてください。

また、今後10時間10分と入力せず、1010と入力すれば、表示は10時間10分と自動的に表示され、合計も出せる方法を教え下さい。

宜しくお願いいたします。

A 回答 (2件)

"分"を置換で消去する(置換後の文字列を空欄にする)。


"時間"を置換で":"にする。
これで時刻に変換されます。

そのままで合計を出すと
時刻計算になってしまって
24時間以上は0に戻るので、
「書式」→「セル」→「表示形式」で
[hh]:mm
とします。
こうすると24時間以上の表示も可能になります。
また、表示形式で、
[hh]"時間"mm"分"
とすれば、○○時間○○分と表示されます。

後者の質問は、にわかに思いつきません。
文字列にすれば別セル上で可能ですが、
その後数値に戻すのが……
素直に10:10と入力してはいけませんか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/12/28 02:32

ユーザー定義関数での解です。



<手順>
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の知識が必要となります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/12/28 02:33

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