[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『万桁以上の時間表示』(purewhitesnow)
はじめましてこんにちは。 さて、さっそくですがご質問があります。一応過去ログは読んだつもりです。 時間計算及び集計作業をしているのですが、万桁以上の時間表示はできないのでしょうか? 表示するだけでしたら文字として打ち込めばよいのですが、あくまで計算できる数字として 算出したいのです。表示形式をいろいろといじってはみましたが、出来なかったので ご質問致します。
具体的にどのような時間でしょうか。 表示形式で [h]:mm のことでしょうか。
(川野鮎太郎)
確かに表示形式 [h]:mm のセルに 9999:59 と入力すると数値に なりますが、10000:00 と入力すると文字列になっちゃいますね。 でも 417 と入力すれば 10008:00 となりますので、ここらあたりで 入力を工夫されたらどうでしょうか? (純丸)(o^-')b
表示形式は [h]:mm です。 時間はかなり細かい数字でして、純丸さんの方法を利用させていただくと かえって時間を要しまして・・・。 やはり15000時間であるならば24で除算して手入力しかないでしょうか・・・ (purewhitesnow)
直接入力では、9999:59:59 までしか、時刻シリアル値としては入力できません。 純丸さんのように単純な数値として入力するか、 または、計算した結果での表示であれば、 71003183:59:59 (9999/12/31 23:59:59)までは、シリアル値として認識するようです。 (TORI)
えーっとすみません。頭が混乱してきましたので一旦整理します。 表示はこんな感じです
A B C D E 1 15123:56 13451:22 12311:05 12955:49 53842:12 2 15123.96 13451.38 12311.09 12955.83
こんな感じでE1に合計が入るわけです。 表示形式は1の行は全て[h]:mmになっています。 2の行は全て標準です。 1行のセルに手入力での時間入力を希望しているのですが、それが叶わないようなので、 1行の各セルに =A2/24 =B2/24 =C2/24 =D2/24 =SUM(A1:D1) と入力して無理やり合計を算出してます。(purewhitesnow)
やっと出けた〜。シートモジュールに下記コードをコピペ。 A1:D1 の範囲に 10000:00 以上を入力すると、時間に修正します。 (純丸)(o^-')b
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
With Target
If .Row > 1 Then Exit Sub If .Column > 5 Then Exit Sub If .Count <> 1 Then Exit Sub If .Value = "" Then Exit Sub If Application.WorksheetFunction.IsNumber(.Value) Then Exit Sub
Application.EnableEvents = False
.Value = Left(.Value, Application.WorksheetFunction.Find(":", .Value) - 1) * (416 + 2 / 3) / 10000 + _ Mid(.Value, Application.WorksheetFunction.Find(":", .Value) + 1, 2) / 1440
Application.EnableEvents = True
End With
End Sub
◆途中からで、はずしていたら、ごめんなさい!
◆例えば、15000:00 と直接入力すると文字になりますが、 ="8000:00"+"7000:00" と入力すると、
15000:00 と表示されますが!?
◆いかがでしょうか! (Maron)
純丸さんMaronさんありがとうございました! Maronさんのはすぐに出来たのですが、純丸さんすみません・・・「シートモジュール」 ってなんですか?上記のコードがマクロだというのは理解できたのですが、どこに入れて どうやって実行したらいいのかわかりませんです・・・(泣) (purewhitesnow)
>「シートモジュール」ってなんですか? ここにだけ、反応〜
エクセルの画面の下 \Sheet1/ \Sheet2/  ̄ ̄ ̄  ̄ ̄ ̄ のようになってますよね? そこの該当シートの部分にカーソルを持っていき、 右クリック → コードの表示 出てきたところに、上記コードをコピペしてみてください〜
(キリキ)(〃⌒o⌒)b
キリキさんありがとうございました〜 さて、迷惑ついでにもうひとつ教えていただけないでしょうか? 上記のコードで設定範囲を広げるにはどうやったらいいんでしょう? (purewhitesnow)
設定範囲は、 > If .Row > 1 Then Exit Sub > If .Column > 5 Then Exit Sub ここになります。 Row > 1 とは、入力された行が、「1」より大きかった場合 Exit Sub 終了しなさい。 同じく Column > 5 とは、入力された列が、「5番目」の列より大きい場合 Exit Sub 終了しなさい。 となります。
ここの数字をご自身で決めてみてください。 ※そーっと修正しました・・・orz 純丸さん、ご指摘感謝☆ (キリキ)(〃⌒o⌒)b
キリキさん、フォローをありがとうございました。m(__)m だけど 行と列が逆、、。(そーっと) (純丸)(o^-')b
数式で、=SUMPRODUCT(--SUBSTITUTE(TEXT( A1:D1,"[h]:mm!/!6!0;0;0;@!/!6!0"),":"," "))/24 とするのは、どうでしょう? (LOOKUP)
成る程。このやり方ですと勝手に合計計算までしてくれるんですね・・・。 LOOKUPさんありがとうございます。勉強になります。 早速皆様方が教えてくださいました方法を用いまして、 今回の資料作成に最も適したものを探し、いじってみてみます。 迷ったり、行き詰まったりしたらまたお世話になりたいと思います。 皆さん本当に有難うございました。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.