[[20040210115537]] 『1つのセル内での秒から時分秒計算+α』(ユウ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『1つのセル内での秒から時分秒計算+α』(ユウ)

10万100万の秒単位(123456sec)を、〜時〜分〜秒の形に表示できるようにしたいです。尚、〜時まで(3600sec)以上いかなければ、〜分〜秒。〜分(60sec)以上いかなければ、〜秒。のみの表示とさせたいです。完成型としては、あるセルに数値を入れるだけで〜時〜分〜秒と表示されるのが望ましいです。
やはりVBを用いるしか手はないですよね??


 A1に3600としてB1に1時間0分と表示させる、と言う事でよいのでしょうか?それなら
B1に=A1/86400としてB1の表示形式をユーザー定義で
[<0.00069]s"秒";[<0.04166]m"分"s"秒";h"時間"m"分"s"秒"
とします。やりたい事が違うようでしたらゴメンなさい。
(ケン)


 いえ、だいぶ参考になります。有り難うございます。
ただ、出来ればですが、同一セル内では無理でしょうか?
仮にA1セルに3600を入力した時点で1時間0分0秒や、
61を入力したら1分1秒といった形に…
やはりエクセルのみでは出来ませんよね?
(ユウ)

 VBAでなく一般機能で解決したいというご質問なのですよね?

  (INA)


出来ることならそれが望ましいです。

(ユウ)


 一般機能でなら61なら0:0:61の様に入力しないと、出来ないと思います。(ケン)

 秒数の数値を入力していって、
「86400」を入力したセルに表示形式でケンさんの
[<0.00069]s"秒";[<0.04166]m"分"s"秒";h"時間"m"分"s"秒"
を設定したセルをコピー、数値を入力したセルに
「形式を選択して貼り付け」「全て」「除算」ではだめ?
(これとて即座じゃありませんよねぇ)
「整数値」をエクセルに「時間」であると認識させるのは
ワンステップでは無理があります。
(KAMIYA)


そうですよね;有り難うございました。とりあえずはセル2つ使ってやって
いきたいと思います。大変役に立ちました。皆様有り難うございました。

(ユウ)


 いまさらで申し訳ありませんが、
 [<0.00069]s"秒";[<0.04166]m"分"s"秒";h"時間"m"分"s"秒"
の意味を詳しく説明してもらえないでしょうか?
分かっていたつもりがじょじょに??になってきてしまいました。
 [<0.00069]s"秒";[<0.04166]m"分"s"秒";h"時間"m"分"s"秒"
全体の意味と、[<0.00069]s、[<0.04166]mの意味を詳しく説明願います。
お願い致します。
(ユウ)

 エクセルを扱っていて「シリアル値」という言葉を目にしたことはないでしょうか。
数値なのですが「日付と時間を表すものである」とエクセルに認識させたときの呼び方です。
数値の整数部分が日数、小数部分を一日に満たない時間部分であると仮定しています。
整数部分は1900年1月1日を「1」として起算します。
小数部分は1/(24*60*60)を一秒として換算します。
セルに 0:00:60 と入力しセルの表示形式を「数値」にすると「0.000694444444444」
セルに 0:60:00 と入力しセルの表示形式を「数値」にすると「0.041666666666667」

 ・・・これでだいぶ察しがつくのではないでしょうか。
(KAMIYA)


 1.00000… →1日=24時間
 0.04166666… →1時間=60分
 0.0006944444… →1分=60秒
ということですね?では1秒単位はどう計算されて表示されているのですか??
(ユウ)

 別なセルに表示させるのでしたら、

 =IF(INT(A1/86400)>0,INT(A1/86400)&"日","")
 &IF(HOUR(A1/86400)>0,HOUR(A1/86400)&"時間","")
 &IF(MINUTE(A1/86400)>0,MINUTE(A1/86400)&"分","")
 &IF(SECOND(A1/86400)>0,SECOND(A1/86400)&"秒","")としますと、

 36020 → 10時間20秒 などともできますね。 (LOOKUP)

 (ユウ)さんの聞きたいことと違うかもしれませんが、
 セルに 0:00:01 と入力するとエクセルは「これは時間として入力された」と判断し、
入力された本来は文字列としての「0:00:01」を「1/(24*60*60)」の数値に
変換し、なおかつ表示としては「0:00:01」にしてくれます。
逆に、「1/(24*60*60)」の数値を入力してやるとエクセルは「0.000011574074074」の
ように数値として認識しますが、これをユーザーのほうが「表示形式」を時間に設定して
やると「0:00:01」のようになります。
だいたいこんな関係だと思いますが。
(KAMIYA)

 そのようなやり方もあるのですね!勉強になります^^
有り難うございます。 >(LOOKUP)さん
 だいぶ理解できて来ました!ただ数値を時間に変換するということは
まず始めにExcelが時間処理だと認知できるような形に持っていかなければ
ならないという感じのことですよね?? >(KAMIYA)さん
(ユウ)

 私もそう思います。私も入力を簡単にと思った事が有りましたが、結局計算が出来ず
面倒にしてしまった、と言う事が以前ありました。それからは時間は時間として、
日付は日付として1つのセルに入力するようにしています。(ケン)

 ほぼ理解できた?(自分的に)と思われるので最後に単純な質問なんですが、
ただ普通に何万秒、表記されているものを86400で割って小数で表記されたものが
シリアス値ですか?
(ユウ)

 そう思って頂いてかまわないとおもいます。
その数値を表示形式をユーザー定義で [S] としてみて下さい、元の数値になりますよね。
(ケン)

 本当ですね!これはシリアル値を通常表記するような意味合いですか?
(ユウ)

 60秒以上表示させる表示形式です。[h]:mm:ssなどが最初からある表示形式では分かりやすい
と思いますが、24時間以上表示させる表示形式です。
表示形式については
https://www.excel.studio-kazu.jp/lib/e3g/e3g.html
こちらを見てください。(ケン)

 [h]:mm:ssで表記指定するとExcel内では、まず秒の計算処理をするのでしょうか?
それで繰り上げ分を分へ、時間へ…時間は24時間以上関係なく表記。ということに
なるのでしょうか??
(ユウ)

 内部でどのように計算しているのかは分かりませんが、考え方としてはそれで良いと
思います。(ケン)

 そうですか。ご丁寧に有り難うございました!本当に勉強になりました^^
また何か疑問等あった時には宜しくお願いします!
(ユウ)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.