『一度、表示した時刻を消えないようにしたい』(上司に頼られて…困)
セルB2に入力したら、入力した時刻をセルC2に表示させる条件式
=IF(B2<>"",IF(C2="",NOW(),C2),"")
を更にバージョンアップさせたいです。
C2に入力時刻表示させた後、B2を消去するとC2も自動的に消えます。
一度、表示させたら消えないようにするための関数があれば教えていただけますでしょうか。
よろしくお願いいたします。
< 使用 Excel:unknown、使用 OS:Windows10 >
NOW() は再計算のたびに変わるので、B2 を消すと C2 も空白へ戻る 。
一度表示した時刻を消えないようにしたいなら、VBAで値を書き込む方法が必要です。
たとえば以下で、
B2 が入力されたときに C2 へ現在時刻を「値」として入れれば、
その後 B2 を消しても C2 は残ります。
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2")) Is Nothing Then
Application.EnableEvents = False
If Range("B2") <> "" And Range("C2") = "" Then
Range("C2").Value = Now
Range("C2").NumberFormat = "yyyy/mm/dd hh:mm:ss"
End If
If Range("B2") = "" Then
' C2を消したくないなら、ここは何もしない
End If
Application.EnableEvents = True
End If
End Sub
(稚拙) 2026/07/08(水) 13:22:51
蛇足かもしれませんが、主旨が「入力時刻を記録したい」なら 厳密には「B2セルの値とNow()をログテーブルに転記する」ことが好ましいと思われます
毎回C2を上書きしていては、「過去、どのような入力がいつされたのか」 の情報が完全に追えなくなるからです (Asa) 2026/07/08(水) 20:57:12
Log という名前のシートを作成した事を前提に
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B2")) Is Nothing Then Exit Sub
On Error GoTo SafeExit
Application.EnableEvents = False
If Range("B2") <> "" Then
If Range("C2") = "" Then
Range("C2").Value = Now
Range("C2").NumberFormat = "yyyy/mm/dd hh:mm:ss"
End If
With ThisWorkbook.Worksheets("Log")
Dim nextRow As Long
nextRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1
.Cells(nextRow, "A").Value = Now
.Cells(nextRow, "B").Value = Range("B2").Value
.Cells(nextRow, "C").Value = Range("B2").Address(False, False)
End With
End If
SafeExit:
Application.EnableEvents = True
End Sub
(稚拙) 2026/07/09(木) 06:16:28
=IF(AND(C2<>"",C2<>0),C2,IF(B2<>"",NOW(),"")) ではどうだろうか?
(ねむねむ) 2026/07/09(木) 08:44:55
質問者さんはすでにしていると思うが。 前提としてオプションの数式の計算方法の設定で反復計算を行うにチェックを入れる。 (ねむねむ) 2026/07/09(木) 08:48:58
C2=IF(B2<>"",NOW(),"")でいいのではないでしょうか。
(はてな) 2026/07/09(木) 10:57:36
このあたりが参考になりますが、 『数式の結果がTRUEなら今日の日付を入れたい』(Will) https://www.excel.studio-kazu.jp/kw/20260521160314.html
シートで再計算が走ってもNOW関数が更新されないための裏技です (´・ω・`) 2026/07/09(木) 11:16:10
excelのデフォルト設定は 循環参照がoffです。 excelは同時に複数のファイルを開くと後に開いたファイルが最初に開いたファイルの設定になります。 循環参照を使ったファイルを循環参照がoffの状態で開くと再計算されて結果が変わった気がします。 //条件よくわからないですが。
B1:=IF(N(B1),B1,IF(A1<>"",NOW(),"")) A1に入力→削除後に保存 その後上記で開いたのちに警告を×で閉じたら0になりました。 (保存せずに戻しても0のまま)
循環参照でやる場合はご注意を。
(ちくわ) 2026/07/09(木) 11:55:13
>表示させたら消えないように
更新でも変わらないようでしょうか? なら、ctrl + : が簡単かと (表示) 2026/07/09(木) 12:41:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.