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

パソコンのシステム時計を使って、エクセルの1つのセルにリアルタイムに時刻を表示させる方法を教えてください。
システム時計でなくても、インターネットから標準時を取り込む方法でも良いと思います。
リアルタイムの時刻をエクセルのデータのひとつとして使いたいのです。
よろしくお願いします。

A 回答 (14件中1~10件)

リアルタイムというのは常時電光時計のように時を刻むということですか。



そうでなくて、現在時刻を表示入力しようということでしたら「Ctrl + :」です。なお、「Ctrl + ;」では日付が出ます。
: , ; が見にくいですが、コロンとセミコロンです

この回答への補足

参考書を見ても、そのときの時刻を表示させる方法しか見つけられません。時間が進むと同時に、表示やデータも自動的に進むようにはできないのでしょうか?

補足日時:2005/10/31 17:47
    • good
    • 0

期待値と相違していれば無視して下さい。


=NOW()関数でリアルな日付時間(yyyy/mm/dd hh:mm)が取得できますので、表示形式をhh:mm:ssにすれば時分秒で表示されます。(F9で随時更新されます)
    • good
    • 0

勘違いでしたら読み流してください



挿入メニューから、【関数】で関数の貼り付けメニューが出ますので、関数の分類【日付/時刻】を選択、関数名で【NOW】を選択→OK
さらに関数を挿入したセルを選択して右クリック→セルの書式設定から、表示形式タブ【時刻】を選択 【種類】はお好きなように。

F9または他のセルに入力後確定(Enter)で時刻が変わります
    • good
    • 0

セルに =NOW()


と入力するだけで
日付と時刻がリアルタイムで表示するようになります。
    • good
    • 0

関数では


=TEXT(NOW(),"ggg.e年mm月.dd日hh時mm分ss秒")
というところでしょうか。
ただF9を押さないと現在時刻に更新されません。
即時(的)に(1分1秒単位で)更新させるには、エクセルVBAレベルで組むのは難しいのではないかと思います。
あとはフリーソフトやアドインを見つけるとか。
取得できる単位の問題
http://www.happy2-island.com/excelsmile/smile04/ …
ある時点からXX秒後に一回起動などならできる(Timerなど)が、永久にXX秒ごとに割り込みを掛けて何か(この場合は時刻表示)をするのは、一段高いスキルがいるように思う。
    • good
    • 0

エクセルでは、デジタル時計のように、何もしなくても自動的に時間表示が変わるということはできないですね。


ただ、「=now()」を埋め込んだセルを参照した計算をする場合、表示が過去の時間になっていても計算を実行した時間を参照して計算しますから使えるとは思います。同時に時間表示も更新されます。
マクロに埋め込むこともできますし、どのような計算をするかを書かれると、回答しやすいかと思います。

この回答への補足

やはりエクセルで時計機能を簡単に実現するのは難しいようですね。

交通量の調査で、今は、調査員がカウンタを手に持って時間当たりに何台通ったかをカウントしています。電子カメラの映像情報の変化を認識して台数をチェックしカウントすれば、無人で24時間の監視・チェックができます。
1分ごとにデータを取れば、10分ごとに集計し直したり、1時間ごとに集計し直したりもできます。1日の中での朝昼晩の変化も掴めますし、1週間の平均的な変化の様子も定量的に把握できます。

このようなことを自動化するのには、やはり専用のソフト開発が必要なのでしょうか?
今のエクセルで実現できればありがたいと思っていますが、エクセル以外でも自動的にデータを蓄積してカウントする方法はあるのでしょうか?
多くの方の知恵を拝借できれば、と思っています。

補足日時:2005/10/31 21:12
    • good
    • 0

kinseiさん、こんばんは。



お話の要点が見えないので、少し、様子を見させていただきました。

#6さんの
>エクセルでは、デジタル時計のように、何もしなくても自動的に時間表示が変わるということはできないですね。

いくつか方法はあります。本来は、VBでは標準的なのに、VBAでは、どうやるのか、探してみましたが、出てきませんでしたし、私が出来ても、該当するActiveX コントロールを持っていない人には使えません。

(問題ある場合は、また、負担の少ない方法を考え直します。ただし、明日は、すぐにお答えできないですが、私でなくても、それが、できる方がここにはいらっしゃいます。)

また、「インターネットから標準時を取り込む方法でも良いと思います」というのは、一回、システム時計を修正するだけのマクロになってしまいます。サーバー経由ですので、若干、cmd.exe /c のコプロからExcelのワークシートに戻ってくるまでのタイムラグが生じて、繰り返しするにはロスが出てしまいます。やはり、システム時計を使わないと、うまくいきません。

シートにコントロールツールのボタンを二つ用意してください。
ここでは、シート1 にボタンを取り付けるとします。
'-------------------------------------------------
Private Sub CommandButton1_Click()
 'スタートボタン
  Call TimerRefresh
End Sub

Private Sub CommandButton2_Click()
 '終了ボタン
  Call TimerStop
  Beep
End Sub

'-------------------------------------------------

標準モジュールには以下のようにしてください。
'------------------------------------------------
Private myOnTime As Date
Sub TimerRefresh()
 'シート1 のA1に表示が出ます。
 Sheet1.Cells(1, 1).Value = Format$(Time(), "h:nn:ss")
 myOnTime = Now + TimeSerial(0, 0, 1) '1秒単位
 DoEvents
 Application.OnTime myOnTime, "TimerRefresh"
End Sub

Sub TimerStop()
  Application.OnTime myOnTime, "TimerRefresh", , False
End Sub

若干、VBAメソッドですから、多少の、負荷・負担があります。他にも方法があります。
    • good
    • 0
この回答へのお礼

なんだか教えていただいたらできそうな雰囲気、ありがとうございます。ご足労を掛けますがよろしくお願いします。
でも私は初心者で特にVBAは始めてのものですから、実際に教えてもらった内容を理解して進めるには、同時にエクセルやVBAの基礎勉強も進める必要があります。自分でもあっちこっち参考にしながら勉強しますので、多少時間がかかるかも知れませんが、よろしくお願いします。


>シートにコントロールツールのボタンを二つ用意してください。
>ここでは、シート1 にボタンを取り付けるとします。


コントロールツールのボタンを用意して、シート1に取り付けるには、
・[ツール]メニュー  [ユーザ設定] [コマンド]タブ [分類]ボックスで、マクロをクリックすればよいのでしょうね?
・また、[コマンド]ボックスから ユーザ設定ボタンを コントロールツールボックスに2個ドラッグすればよいのでしょうか?

・その後の、マクロの登録やスタートボタン、終了ボタン、標準モジュールについて、それらの内容と取扱い方がよく分かりません。
明日、他のページを参考にしながら勉強してみます。

お礼日時:2005/11/01 01:07

こんばんは。

Wendy02です。

ボタンの取り付け方:

メニューの何もないところで、右クリック-コントロールツールボックス
 とすると、
コントロールツールバーが出てきます。

次に、□(長方形)のボタンをクリック

ワークシートにマウスを移すと、マウスカーソルが、+ になります。

それで、斜めにドラッグすれば、ボタンが出来上がります。

それをもう一度行ってください。

そうしたら、そのボタンを右クリック-[コードの表示]

で、そのまま、

 Private Sub CommandButton1_Click()
 'ココ
 End Sub

というのが、出来上がりますので、そこに、Call TimerRefresh を入れ、

Private Sub CommandButton2_Click()
'ココ
End Sub

に、
Call TimerStop
Beep

を入れ、今度は、現在のVisual Basic Editor 画面のまま、メニューから 挿入-標準モジュールをクリック

今度は、標準モジュール側のコードを貼り付けます。

貼り付けたら、Alt キーを押しながら、Q (または、ファイル(F)-終了してExcelへ戻る)

まだ、コントロールツールバーが出ていたら、青い三角定規のコマンドボタンが凹んでいたら、クリックして、元に戻します。
(ただ、もし、シート上のコマンドボタンの名前などを変える場合は、右クリックして、コマンドボタンオブジェクトから、名前を変更してから、青い三角定規のコマンドボタンをクリックします。)

そして、メニューの何もないところで、右クリック-コントロールツールボックスをクリックして、ツールバーを消します。

>多少時間がかかるかも知れませんが、

時間さえ掛ければ、これは何とかなりますし、より良いものが得られると思います。なお、時間表示中にも入力は可能であることを前提として考えています。

コードを取り付ける方法は、いくつかのサイトでは、スクリーン・キャプチャで取った画面の絵で説明出ているものがあるかと思います。
    • good
    • 0
この回答へのお礼

時間が取れなくて、お礼が遅くなってしまい、申し訳ありません。

時々刻々と動く時計を表示させることができました。これで大幅前進です。ありがとうございました。

ついでにお聞きしたいのですが、最終的には、
この時計をA1のセルに表示させ、通過車両台数の計数値をA2のセルに表示させながら、
測定開始から1分ごとの計数結果の台数をC1のセルからCnのセルに順番に表示させて記録したいのですが、
これができるまでの道のりはまだまだ遠いのでしょうか?

私が初心者でかつ十分には時間が取れていないので、レスポンスが遅くなってしまうと思います。
ネット上のどこを見れば参考にできるのか、そのページを教えていただけるとありがたいと思っています。
よろしくお願いします。

お礼日時:2005/11/01 20:36

こんばんは。

Wendy02です。

>ついでにお聞きしたいのですが、最終的には、
>この時計をA1のセルに表示させ、通過車両台数の計数値をA2のセルに表示させながら、
>これができるまでの道のりはまだまだ遠いのでしょうか?

ちょっと考えさせてください。(今日は、ちょっと無理ですが、より良いものを考えます。もともと、私が、この問題は、ずっと前から手がけていた内容なのです。このご質問が、もし私の考えたものと合えばと思って、それで様子をみていたのです。Visual Basic カテゴリでは、回答の反応自体がありませんでした。久々の名作?(迷作)だと思ったのですが。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=1721584
コンセプトは同じですが、こちらよりも、はるかにむつかしい内容です。)

>私が初心者でかつ十分には時間が取れていないので、レスポンスが遅くなってし
>まうと思います。

それは構いません。やりながら、学べばよいです。入門編ぐらいは、1ヶ月ぐらいで卒業できますから。それから、私は、VBAを使って、自分の発言を画面から取得しリスト化して、気になるものは、すぐに開けられるようにしてあります。どんなに、時が経っても、こちらが、もうダメと判断しなければ、リストには残ります。(言葉よりもずっとすごいです。(^^;)

それから、お礼側に返事をつけたものに関しては、メールが届きますので分ります。時間的なものは気にしなくてよいです。また、つけなくても、1ヶ月先でも、2ヶ月先でも、今は、十分にチェックできます。

>ネット上のどこを見れば参考にできるのか、そのページを教えていただけるとあ
>りがたいと思っています。

このご質問の件に関しては、たぶん、どこにも出てこないかもしれません。私の勧めるところは、今は、Microsoft のMSDNぐらいしかありません。
    • good
    • 0
この回答へのお礼

昨夜読ませていただきましたが、感激しただけで お礼の記入を忘れていました。
遅くなりましたが、取り敢えずお礼だけ申し述べさせていただきます。
引き続きよろしくお願いします。

お礼日時:2005/11/02 08:01

こんばんは。

Wendy02です。
やっと、出来ました。二つのものを考えてみました。どうしても、気が乗らないと作れない種類のものです。

最初に紹介したものと同じパターンのものと、二重線から下のコードは、APIを使ったもので、私には、多少不安定要素が含まれるような気がします。ただ、時間の書き込み中に占有されません。

なお、時間表示は、ストップウォッチになっています。


表示レイアウト
 A    B   C     ボタン1
0:01:24     30
45        5
        10     ボタン2
         0


'シートモジュール
'-------------------------------------
Private Sub CommandButton1_Click()
 Range("A1").NumberFormatLocal = "h:mm:ss"
 Range("A1").Value = 0
 myStartTime = TimeValue(Now)
 CommandButton1.Enabled = False
 Call TimerRefresh
End Sub

Private Sub CommandButton2_Click()
 Call TimerRefrshStop
 CommandButton1.Enabled = True
End Sub

'標準モジュール
'------------------------------------------------------
Private myOnTime As Date
Private lngCount As Long
Public myStartTime As Date
Sub TimerRefresh()
 Dim TimeDifference As Date
 '掲示板に出したもの
 'A1に表示が出ます。
 TimeDifference = Format$(Time() - myStartTime, "h:nn:ss")
 Cells(1, 1).Value = TimeDifference
 myOnTime = Now + TimeSerial(0, 0, 1) '1秒単位
 DoEvents
 Application.OnTime myOnTime, "TimerRefresh"
 If  Second(TimeDifference) = 0 Then
    If Range("C65536").End(xlUp) = 0 Then
    Range("C65536").End(xlUp) = Range("A2").Value - lngCount
    Else
    Range("C65536").End(xlUp).Offset(1).Value = Range("A2").Value - lngCount
    End If
    lngCount = Range("A2").Value
 End If
End Sub

Sub TimerRefrshStop()
  On Error Resume Next
  Application.OnTime myOnTime, "TimerRefresh", , False
  lngCount = 0
  myStartTime = 0
End Sub

'------------------------------------------------------

'==========================================================
'以下は、同じモジュールには登録はしてはいけません。
'単独のモジュールです。なるべく、他のブックといっしょには用いないでください。

'シートモジュール
'---------------------------------------------------------
Private Sub CommandButton1_Click()
 'スタートボタン
  Call StartTimer
  CommandButton1.Enabled = False
End Sub

Private Sub CommandButton2_Click()
 '終了ボタン
  Call TimerStop
  CommandButton1.Enabled = True
End Sub

'標準モジュール
'-------------------------------------------------------
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Function SetTimer Lib "user32" (ByVal Hwnd As Long, ByVal nIDEvent As Long _
  , ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Sub KillTimer Lib "user32" (ByVal Hwnd As Long, ByVal nIDEvent As Long)

Private lngTimerID As Long
Private myCell As Range
Private lngStartTime As Long
Private lngStock As Long
Sub StartTimer()
  Dim lngInterval As Long
  lngInterval = 1000
  Set myCell = Range("A1")
  myCell.NumberFormatLocal = "h:mm:ss"
  Range("A1").Value = 0
  lngStartTime = GetTickCount()
  lngTimerID = SetTimer(0&, 0&, lngInterval, AddressOf s_Timer)
End Sub

Sub s_Timer(ByVal Hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)
  Dim dblTime As Double
  dblTime = (GetTickCount() - lngStartTime) / (60& * 60 * 24 * 1000)
  On Error Resume Next
  myCell.Value2 = dblTime
  If Second(dblTime) Mod 20 = 0 Or Second(dblTime) = 0 Then
    If Range("C65536").End(xlUp) = 0 Then
    Range("C65536").End(xlUp) = Range("A2").Value - lngStock
    Else
    Range("C65536").End(xlUp).Offset(1).Value = Range("A2").Value - lngStock
    End If
    lngStock = Range("A2").Value
  End If
End Sub

Sub TimerStop()
  KillTimer 0&, lngTimerID
  Set myCell = Nothing
  lngStock = 0
End Sub

この回答への補足

教えていただいた今回の2例についての不具合の問い合わせと、追加の質問です。
質問についての方が簡単に回答できそうに思いますので、こちらを早めに教えていただければ、使い勝手やレイアウトなどいろいろ検討比較に早く着手できます。よろしくお願いします。


(不具合1)今回の2例とも、通過台数が0台だったときに、最初の1分については正しく0台と表示されますが、続けて0台だったときは2回目以降の0台のデータが追加されません。
また0台が2回以上続いた後に0台以外のデータが入ると、最初の0台のデータに上書きされてしまい、最初の0台のデータが残りません。

(不具合2) 2番目のストップウオッチのボタン動作が正しくないようです。
コマンド2のボタンでリフレッシュされない、コマンド1ボタンでリフレッシュされるが正しく再スタートできない、など不安定なようです。
また2番目のストップウオッチでは、最初は20秒間隔でカウントされ、その後1分間隔でカウントされるようです。
なぜ20秒間隔なのかは分かりませんが。

(不具合3)3つ目の不具合は、1番目2番目のストップウオッチとも、リフレッシュしてもカウント台数はリフレッシュ前の台数をおぼえているようです。
トータル台数のデータはリフレッシュされません。


この時計をいろいろ応用できるように、私もマクロの勉強を進めたいと思っていますが、今回のプログラムについて、教えてください。

(質問1) 1分ごとのカウントはどこで指定されているのでしょうか?それを5分ごとや20秒ごとに変更するのにはどういじればよいのでしょうか?

(質問2)今回はカウントの差分が(c,1)から始まって(c,2)(c,3)…とc列に表示されますが、
これを(d,7)から始まって(e,7)(f,7)…のように最初のセルを指定して、第7行に、データを100個まで表示させるようにするには、どうすればよいのでしょうか?

(質問3-1)上記の場合に(d,6)(e,6)(f,6)…の第6行のセルに測定時刻も同時に表示させるにはどのようにすればよいのでしょうか?
(質問3-2)測定時刻データが残せるなら、先日の現在時刻の時計が意外に使いやすそうです。こちらの場合についても時刻を並べて表示する方法を教えていただけると幸いです。

以上、よろしくお願いします。

補足日時:2005/11/05 00:51
    • good
    • 0
この回答へのお礼

すばらしいものを教えていただきました。ありがとうございます。先日は時計、今回はストップウオッチ2例です。
エクセルって本当に何でもできるんだなーと、感心してしまいます。先日、早速 「超図解Excel マクロ&VBA プログラミング」 を買って来てしまいました。
これから先、長いと思いますが、私も自分でマクロやVBAを使えるようになりたいと思っています。


お礼の方は字数が限られていますので、補足の方に教えていただいた今回の2例についての不具合の問い合わせと、追加の質問を書きます。

お礼日時:2005/11/05 00:49

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

このQ&Aを見た人はこんなQ&Aも見ています