[[20260708131331]] 『一度、表示した時刻を消えないようにしたい』(上司に頼られて…困) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『一度、表示した時刻を消えないようにしたい』(上司に頼られて…困)

セル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


稚拙さん
ありがとうございます。
一度、試してみます。
(上司に頼られて…困) 2026/07/08(水) 13:26:10

 蛇足かもしれませんが、主旨が「入力時刻を記録したい」なら
 厳密には「B2セルの値とNow()をログテーブルに転記する」ことが好ましいと思われます

 毎回C2を上書きしていては、「過去、どのような入力がいつされたのか」
 の情報が完全に追えなくなるからです
(Asa) 2026/07/08(水) 20:57:12

スレ主からリターンが無く、解決済みでしょうが
Asa氏のアドバイスを追加。

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<>"",IF(C2="",NOW(),C2),"")

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.