【先着1,000名様!】1,000円分をプレゼント!

エクセル初心者です。シート内で複数の入力時間を、更新させずに表示させたいのですが、どのようにすればよいのでしょうか?
A1にある数値を入力したらB1にその入力時間を表示させ、一定時間後にA2に別の数値を入力すると、B2にその入力時間を表示させたいです。
B1、B2の入力時間とは、あくまでもそれぞれの入力した時の時間を表示させたく、また、表示後は時間の更新はさせたくないです。
”=NOW()”だと、入力のたびに過去の表示時間まで同時に更新されてしまい、また、複数の表示時間が全て同じ時間となってしまいます。
簡単な関数などでできれば助かりますが、マクロやVBAでないとできないというのであればやってみたいと思いますので、できる方法で教えてください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

普通の操作は、時刻の入力は、CTRLを押しつつ:キーを押します。


ーー
VBAの勉強してない人には進められませんが、
シートタブを右クリック
コードの表示
Generalと見えているところをクリク
Worksheetを選ぶ
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
と出てくるが無視
SelectionChangeと出ている部分をクリック
Changeをクリック
Private Sub Worksheet_Change(ByVal Target As Range)

End Sub
となる。
この間にコードを入力する。
Targetが、セルの値を変化させたセルなので
その隣のセル Offset(0,1) に時刻を入れるのは
Target.offset(0,1)=Time
=dateにして書式で時刻だけ見せるほうが、入力日も残って、良いかもしれない。
ただしVBAででも隣に時刻を入れるとセルの値の変化イベントが起こり、ぐるぐる回りになるから、その機能を1時的に止めて、隣のセルに時刻をセットし、イベント機能を復活させる。
また、例えばA1:A30のセル以外は、自動時刻セットが困るので
例えば、A列以外のセルは除外のコードを入れる。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub
If Target.Row >= 31 Then Exit Sub
Application.EnableEvents = False
Target.Offset(0, 1) = Time
Application.EnableEvents = True
End Sub
細かく言えば、A列を入力後、DELで消したときの対策など必要だが
省略。
ーー
こんなにいっぱいVBAの色々なことが詰まっている内容を今すぐやろうというのはむりだよ。
まあ丸呑みしてこのキッカケでVBAを勉強してください。
    • good
    • 0
この回答へのお礼

丁寧なご回答ありがとうございました。
コードを試してみて、希望通りの表示ができました。
VBAにはじめて触れましたが、VBAの面白さの一端を感じました。これをきっかけに、上記のコードの説明を読み返しながら勉強してみたいと思います。

お礼日時:2007/11/10 11:27

関数では、無理です。


ひとつ手間ですが、B1セルで、Ctrl+*で時間を入れます。

VBAでは、「ツール」「マクロ」「VB Editor]でエディター開く
「表示」「プロジェクトエクスプローラー」表示
時刻を入れるシートをクリック
そのシートのコードに
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
Target.Offset(0, 1).Value = Time
End If
End Sub
のコード、コピィしてみてください。
Private Sub Worksheet_Change(ByVal Target As Range)は
その、シートに変更があった場合に実行される。
Target.Column = 1は、変更されたのが、1列目(A列だったら)
Offset(0, 1)は、1列左に時間を入れるという意味です。
VBAは別途、勉強してみてください。
    • good
    • 0
この回答へのお礼

早速ご回答ありがとうございました。やはり関数では無理なんですね。
Ctrl+*で時間を入れるというのは、とりあえず手っ取り早く入力するには使える機能ですね。知りませんでした。
VBAでのコードも試してみて、希望通りの表示ができました。VBA自体の使い方がまだよく分かっていないので、コードを実行させても魔法を見ている感じですが、これを機会に勉強してみます。

お礼日時:2007/11/10 11:17

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QA1セルに入力したら、入力時間をA2セルに自動挿入

こんにちはtmgmです。

Excelでちょっと困っています。
「A1セルに文字を入力したときの時間をA2セルに表示する」ということがやりたいのですが、
実際やってみるとなかなか出来ませんでした。

A2セルの書式をhh:mmなどにして、セルに=if(A1<>"",NOW(),"")と書きました。
これで一応A1セル入力でA2セルに時間は挿入されますが、Excelの自動計算機能により、一度閉じてまた開いた場合や他のセルで自動計算を行うような入力をした際などに時間が更新されてしまいます。
時間が更新されてしまってはだめなんです。

かといってツール→オプションから自動計算を手動にすると、その他の計算(例えばSUM関数など)の自動計算に影響がでて、使い勝手が違ってくるし。。。。


どうすればよろしいんでしょうか?
お分かりになる方ご返答宜しく御願い致します。

Aベストアンサー

VBAで。

シート名を右クリックしてコードの表示を選び、出てきたVBE画面(何か書かれていたら消して)に書きます。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim r As Range
 For Each r In Target
  If r.Column = 1 Then
    r.Offset(0, 1).Value = Format(Now, "hh:mm:ss")
  End If
 Next r
End Sub

試すのはテスト環境で。

QExcelでTODAY関数を更新させない方法

こんにちは。

ExcelのTODAY関数について質問です。

例えば、

Sheet1 …x日作成
Sheet2 …y日作成
Sheet3 …z日作成

と順番に作成した際、全てにTODAY関数を使っていると、
Sheet1~3全てz日の日付になってしまいます。

TODAY関数を使って、特定のシートのみ更新させ、
過去に作成したものを更新させないことは可能でしょうか?

よろしくお願いします。

Aベストアンサー

出来る出来ないで言えば、やれば出来ます。
ただし安全な方法では無いので、実際の仕事に使ってはいけません。


たとえばA1セルに
=NOW()
と記入し、セルの書式設定で年月日時分秒まで表示するようにしておきます
F9キーを押すと時分秒の表示が変わるので、一日置いて日付が更新されるのを待つ必要はありません


手順:
ご利用のエクセルのバージョンも不明なので手取り足取り手順の説明は割愛しますが、エクセルのオプションで反復計算のチェックを入れます


>特定のシートのみ更新させ、過去に作成したものを更新させない

「どのシート」はまだ毎日更新して良くて、「このシート」はもうそこで更新しないようにしたいと、エクセルに明確に指示をする必要があります。
そこで例えばB1セルに「固定」と記入したら、それでそのシートは更新が止まるようにします

まだB1には記入しないでおきます
C1セルに
=IF(B1="固定",C1,NOW())
と記入、年月日時分秒の表示をさせます
必要に応じてこのシートを複製して、明日明後日用のシートにします

B1セルに
固定
と記入しOKすると、あとはそのシートで何をしても更新しなくなります

出来る出来ないで言えば、やれば出来ます。
ただし安全な方法では無いので、実際の仕事に使ってはいけません。


たとえばA1セルに
=NOW()
と記入し、セルの書式設定で年月日時分秒まで表示するようにしておきます
F9キーを押すと時分秒の表示が変わるので、一日置いて日付が更新されるのを待つ必要はありません


手順:
ご利用のエクセルのバージョンも不明なので手取り足取り手順の説明は割愛しますが、エクセルのオプションで反復計算のチェックを入れます


>特定のシートのみ更新させ、過去に作成した...続きを読む

Q◆ EXCEL自動入力日付を自動で変わらないようにする方法

EXCELで日付を自動入力することが出来て大変便利ですが、一度入力した日付が後日になっても自動的に変わらないようにする方法はありませんか?日付のセルをコピーして値貼り付けをすればよいのですが一度入力したら自動的に変わらないような機能はありませんか?

Aベストアンサー

多分、Today関数をセルに入れてあるのだと思います。
VBA案ですが 日付をA1セルに入れる場合
シート名のタブを右クリック コードの表示をクリック
VBエディターが開いたら

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$A$1" Then
Target.Value = Date
End If
End Sub

をコピィして閉じます。
A1セルをダブルクリックすると今日の日付が値で入ります。
マクロを使用する事がはじめてなら、セキュリティがかかっているかもしれないので
ツール=>オプションでセキュリティのタブで、マクロセキュリティを
 中 位にしてエクセルを再度開いてみてください。

QEXCELのNOW()関数の値の固定する方法は?

NOW()関数をセルに入力した時に返される日付、
時刻を文字列にそのまま固定する方法を教えてください。

Aベストアンサー

1.セルをコピー
2.値の貼り付け

または、
[Ctrl] + [;]
[ ] (SPACE)
[Ctrl] + [:]
と、キー入力。

Q[EXCEL]ボタン押す→時刻が表に入る方法

会社で勤務時間をEXCELで管理することになりました。(タイムカードのように)
毎日、出勤時、退勤時にその時刻を入力していく必要があり、少しでも操作の手間を省きたいので、
ボタンのようなものを設置して、今の時刻が表の中の必要なところに入るようにしたいのですが、
EXCELでそういうことはできますか?

Aベストアンサー

可能なのだが、エクセルVBAを知ってないと、うまく行かないし、他人にデータ入力を任せる場面があるなら、それなりの防御機能を考えないとだめです。
しかし今でも、誤ったら他人の行にデータを入れ放題ですか。
こういうのはお金(給与)や名誉(遅刻)に関連することで、個人が所有CDの整理表を自分で作るなどとは違うのです。
エクセルなどというソフトはそういうことに適してないのです。
既に回答で言及の在るフォームなどを使って、他人(他行)のデータは隠したり(見えないように)し足りは出来ますが、VBAも中級程度のならないと。ある程度システム思考に慣れないと無理です。
CTRL+:、CTRL+;などの操作を覚えてもらうほうが良いでしょう。ボタンクリックとそう手間は変わらない。

QExcelで日付と時間の自動入力

教えてください。
エクセルで表を作っているのですが、
D列に文字を入力すると、
A列に入力した日付
B列に入力した時間
を「自動で」表示させたいのですが…マクロやVBAなどでできますでしょうか?
できれば、D列の文字を消すと日付と時間も消えるようにしたいです。
初心者で申し訳ないのですが、よろしくお願いします。

Aベストアンサー

No.2です。

Range("A" & r.Row).Clear
Range("B" & r.Row).Clear

の部分を

Range("A" & r.Row).Value = ""
Range("B" & r.Row).Value = ""

に変えて下さい。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q☆Excelエクセルで入力した日の日付を表示したいです☆

こんばんは!エクセルで、なにかデータを入力した横のセルに、その日の日付が自動的に入るような方法があれば、是非教えてくださいm(__)m横の列に手動で日付を入力すればよいといえばよいのですが^^;その列には、また別の日に、追加でデータを入力していきたいですので、前の日の日付もその日の日付も残るようにしたいんです。today関数とかじゃ全部その日になってしまいますよね。。。もし、データを入力しただけで、そのようなことができる方法があれば、是非教えてください。よろしくお願いしますm(__)m

Aベストアンサー

マクロを組むしかありません。過去の質問を検索すれば結構出てきますよ。
手動でいいなら、「Ctrl」キーを押しながら「;」キーで今日の日付になります。

QExcel 日付関数の値を固定値に

Excel で NOW() 関数で表示させてあるセルがあります。
このブックは、閉じる前に「名前を付けて保存」しますが、別の日に開いたとき、もとの日付けのまま表示させるにはどうしたらよいでしょうか。
教えて下さい。よろしくお願いします。

Aベストアンサー

閉じる前に、コピーして値として貼り付ける。
(上記をマクロなどに記録させるのも一つの方法です。)

数式でなくショートカットキーで入力する。
日付のショートカットキー Ctrl+;
時刻のショートカットキー Ctrl+:
日付と時刻の場合はCtrl+; の後に半角スペース挿入して Ctrl+:

Q特定セルの内容を更新したら、その更新日を自動的に表示する方法について

エクセルで、特定のセルの内容を更新すると、別の特定セルに 更新日付が自動的に表示させたいと思っております。
例えば『A1』へ新規に文字入力したり、セルの内容を更新した時に、セル『B1』にその日の日付が自動で表示される。
そして、違う日にもう一度、同じ欄に入力すれば、その入力した日付に随時更新されるようにするための方法を教えていただければ幸いでございます。

御手数ですが、エクセル関数またはVBA、マクロのいずれかで実現可能な方法があれば教えて下さい。
何卒、宜しくお願いいたします。

Aベストアンサー

マクロの力を借りる事になります。
例えば、シートの名前のタブを右クリックして、コードの表示 をクリック
VBエディターが起動しますので
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 3 Then'←の3はC列のこと
If Target.Value = "" Then
Cells(Target.Row, 2).Value = ""
Else
Cells(Target.Row, 2).Value = Date'←の2はB列に日付
Cells(Target.Row, 4).Activate'←の4はD列へ移動
End If
End If
End Sub
をコピィしてみてください。上記のコードでは
C列に変更があれば、B列に日付を入れて、C列へ移動します。
空白へ変更した場合はA列を空白に戻します。
ご自身のシートに合わせて編集してみてください。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング