• 締切済み

Excel書式設定が24時間以上の設定の時の数式バーの内容について

セルの中に「44時間」という24時間以上の表示を望む場合・・・ 1.セル選択して右クリック→「セルの書式設定」を選択 2.「表示形式」タブにある「ユーザー定義」選択して[hh]:mmと入力→OK 3.書式設定したセルに「44:00」と入力 以上の方法で24時間以上の表示が可能となりセルには入力したとおり「44:00」と表示させることができます。 しかし画面上のメニューバー下に表示されている数式バーにはなぜか「1900/1/1 20:00:00」と表示されています。 例として「44:00」と単純な時間を書き込みましたが、実際は「69:53」など分も細かく入力しており、それらのセルは膨大な数です。 そしてすべてのセルに対する数式バーの表示が入力した時間とは全く関係の無い表示になってしまっています。 セルに入力した「40:00」を「40:05」など一部だけ修正をしたい場合F2やクリックでセルを選択をすると、セルの内容が実際入力した「40:00」ではなく「1900/1/1 20:00:00」と表示されてしまい、最後の「0」だけ消して「5」だけ入力するということができません。 こうなると「40:05」と全部入力し直さなくてはならず、対象セルがシート内全部という膨大な数なので「全部入力し直す」という形は絶対に避けたいと思います。 そこで、この数式バーに表示される内容も入力したのと同じ「44:00」表示にさせるにはどうしたらよいですか? 仕事で要求された内容ですので「仕様で無理」という回答が無いことを祈ります。

みんなの回答

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.3

日付を文字列で入力した場合、 算術演算子(+,-,*,/など)を使った計算や 比較演算子(>,<,=,<>など)を使った条件判断などはできますが 関数による計算はできません。 例えば A1が「44:00」A2が「16:00」A3が「22:00」 と入力されている場合 =A1+A2+A3 はちゃんと「82:00」と計算できますが (勿論セルの書式はユーザー定義"[hh]:ss"にする必要があります) =SUM(A1:A3) は計算できません。 そこで一つの案ですが、作業列を作ってはいかがでしょうか。 要するに日付を文字列で入力するセルと、 計算に使うシリアル値を入れるセルを 別々のセルに分ける、ということです。 シリアル値は文字列で入力されたものから算出します。 (見かけ上邪魔であれば非表示にすれば良いので) 以下、手順を記します。 今現在、日付シリアル値が入っている列(A列とします)の 隣に列を挿入(B列とします)し、B列のセルの書式は「標準」にする。 B列に「=TEXT(A1,"[hh]:mm")」と入力し、行数分コピーする。 B列を列コピーし、B列に「形式を選択して貼り付け」で「値」を選択する。 B列を列選択し、セルの書式を「文字列」に変更する。 (ここまでで、B列にはA列の入力内容が文字列化されたものが入っているはず) A列に「=DATEVALUE(B1)+TIMEVALUE(B1)」と入力し、行数分コピーする A列を右クリックして非表示にする。 こうすれば、今入っている数式は修正の必要がないはずです。 注意点としては、行を増やす時にはちゃんと A列に同じ式が入るようにすることです。 (既に入力済みの行をコピーして貼り付けか挿入をすればいいです)

heartin_pe
質問者

お礼

返事遅くなりすみません! 回答ありがとうございます。 >一つの案ですが、作業列を作ってはいかがでしょうか 作業列は見た目宜しくないので作業列は作らずということでした。 結果が表示されるセル内だけですべてまかなうようにということだったので、ずいぶん四苦八苦しましたが周りの方々のアドバイスを頂けてなんとか見栄えだけ形にしてOKをもらうことができました。 シリアル値の知識は何度話を聞いても全く頭の中に入っていかないので苦手とする分野ですが、ちょこっと一歩前に進めたような気がします。 丁寧な回答ありがとうございました。 すべて参考として利用することはできませんでしたが、細かく説明してくださる時間を割いてもらって本当に感謝しています!

  • dodemoii
  • ベストアンサー率59% (769/1282)
回答No.2

こんにちは エクセルの仕様で、1900年1月1日 0:00:00を1として起算 しているのでそのような表示となります。 http://office.microsoft.com/ja-jp/excel/HP052006741041.aspx 単に最後の0を5に直すだけなら、そのままの表示の該当箇所の0を5に 直せば、正しく直せると思います。 例:25:00の表示セル選択→1900/1/1 1:00:00の表示で 1900/1/1 1:05:00と修正→25:05とセルの表示が戻る。 # 計算で処理して、数式バーを見ないようにしましょう。 下記が参考になると思います http://miyahorinn.fc2web.com/faq/faq020.html では。

heartin_pe
質問者

お礼

修正するだけならdodemoiiさんが書いてくださった方法でも極論OKだと思いますが、見た目を要求されていますので入力内容と数式バーの内容を完全一致させる必要があります。 「セルには44時間になってるのに、なんで数式バーは1900年なの?紛らわしいし別の人が見ると混乱するから表示を一致させといて。」ということです。 無理ならセルは44:00で、数式バーは当月の日付(2008年12月)を表示でも良いよ。とのこと(数式バーの1900年1月1日という現在とは違う年月表示が気に入らない様子) さすがに後者は無理なんじゃないかな~ということでセル表示と数式バー表示の一致を試みてみたんです。 2つ目に書いてくださった参照ページは時間の基本的な計算方法ですね。 数式バーは他のセルの数式に使うため非表示設定にするわけにもいかず、しかし見ないようにするで済ますわけにはいきませんので、とりあえずは文字列設定で逃れてみます。 早い回答本当に有難うございます。

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

日付や時間はシリアル値といって、24時間を1とする(12時間なら0.5)数字で表されています これは1900年1月1日0:00を起点としてカウントされる数字です ですので質問者が行おうとしているF2キーなど時間の数字を直接入力しての編集は、   「 仕 様 で す の で 無 理 」 そのような編集をしたいのであれば、文字列として認識させる必要があります 文字列から日付や時間に直す関数は DATEVALUE,TIMEVALUEです 逆にシリアル値を日付や時間を示す文字列にする関数は、TEXTです 例:TIMEVALUE("08:30")   TEXT(0.5,"[h]:mm")  など 面倒だしどうしても時間そのもので時間を修正したいと言うのであれば、「形式を指定して貼り付け」をお奨めしてみます 例:  どこか空いているセルに「0:05」と入力して、このセルをコピーする  時間を修正したいセルを選択して右クリック(メニューバーから編集を選択してもOK)  「形式を選択して貼り付け」を選ぶ  続いて、加算(または減算)を選んでOKボタンをクリック こんなんでどうでしょう 幸せになれたでしょうか

heartin_pe
質問者

お礼

Noぉぉぉ~!! 仕様で無理なんですか?! その回答だけは聞きたくなかったです(ToT) シリアル値によるものだというのは知っていましたが、1900/1/1からカウントして表示してるなんて、なんと意味不明なことを・・・と強く思います。 しかし文字列で「44:00」と表示させることができるのですね。 24時間以上の表示させるのは[hh]のみだと思っていました。 文字列の書式設定であとあとそのセルを範囲指定している数式に影響はないのでしょうか? 時間と認識してくれるのでしょうか? この時間入力しているファイルは社員の残業時間統計を取っているシートなので全部のセル内容は違い、沢山の数式に指定範囲にされているので数式バーの内容も同様にするように。ということでした。 なので「形式を指定して貼り付け」は使う用途が無いですし、加算除算はちょっと望んでいるのとは違うものになります。 だけど質問早々的確な回答を有難うございます!