web-dev-qa-db-ja.com

ユーザーが隣接するセルに情報を入力すると、セルに日付が自動入力されます

私はスプレッドシートを持っています。そこで、人々はプロジェクトの更新を入力し、次に更新の日付を入力できます。何が起こっているのかというと、人々はノートの日付を忘れてしまっているということです。日付セルに現在/エントリの日付を自動入力させる方法はありますか?

If関数がそれを行うと想定していますか?

4
Shelby Sauer

このイベントマクロは日付を列に配置します[〜#〜] b [〜#〜]列に値が入力されている場合A。マクロはワークシートのコード領域にインストールする必要があります。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, B As Range, Inte As Range, r As Range
    Set A = Range("A:A")
    Set Inte = Intersect(A, Target)
    If Inte Is Nothing Then Exit Sub
    Application.EnableEvents = False
        For Each r In Inte
            r.Offset(0, 1).Value = Date
        Next r
    Application.EnableEvents = True
End Sub

これはワークシートコードであるため、インストールが簡単で、自動で使用できます。

  1. excelウィンドウの下部近くにあるタブ名を右クリックします
  2. [コードの表示]を選択-VBEウィンドウが表示されます
  3. 内容を貼り付けてVBEウィンドウを閉じます

懸念がある場合は、まずトライアルワークシートで試してください。

ブックを保存すると、マクロも一緒に保存されます。 2003年以降のバージョンのExcelを使用している場合は、ファイルを.xlsxではなく.xlsmとして保存する必要があります。

マクロを削除するには:

  1. 上記のようにVBEウィンドウを表示します
  2. コードをクリアする
  3. vBEウィンドウを閉じる

マクロ全般の詳細については、以下を参照してください。

http://www.mvps.org/dmcritchie/Excel/getstarted.htm

そして

http://msdn.Microsoft.com/en-us/library/ee814735(v = office.14).aspx

イベントマクロ(ワークシートコード)の詳細については、以下を参照してください。

http://www.mvps.org/dmcritchie/Excel/event.htm

これを機能させるにはマクロを有効にする必要があります!

別の列を使用するようにコードを変更します。

EDIT#1:

このバージョンは、列[〜#〜] b [〜#〜]に既に存在するマテリアルを上書きしません:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, B As Range, Inte As Range, r As Range
    Set A = Range("A:A")
    Set Inte = Intersect(A, Target)
    If Inte Is Nothing Then Exit Sub
    Application.EnableEvents = False
        For Each r In Inte
            If r.Offset(0, 1).Value = "" Then
               r.Offset(0, 1).Value = Date
            End If
        Next r
    Application.EnableEvents = True
End Sub
5
Gary's Student

ZATの答えがうまくいきました... ";"を "、"に変更した後。

=IF(AND(D52<>"",D52<>0),NOW(),"")

「TODAY」の代わりに「NOW」を使用して、時刻を指定しました。

2
Ccoolest

対応する入力セル(D13など)が空でなく0が入力されていない場合は、目的のセル(C13など)で次の数式を試して現在の日付を入力します。

=IF(AND(D13<>"";D13<>0);TODAY();"")

次に、この数式を後続のセルにコピーして、その列の数式を入力します(例:col C)

1
ZAT

列AとBに日付と時刻を入力し、列Dにデータを入力

Private Sub Worksheet_Change(ByVal Target As Range)
Dim A As Range, B As Range, Inte As Range, r As Range
Set A = Range("D:D")
Set Inte = Intersect(A, Target)
If Inte Is Nothing Then Exit Sub
Application.EnableEvents = False
    For Each r In Inte
        If r.Value > 0 Then
           r.Offset(0, -3).Value = Date
           r.Offset(0, -3).NumberFormat = "dd-mm-yyyy"
           r.Offset(0, -2).Value = Time
           r.Offset(0, -2).NumberFormat = "hh:mm:ss AM/PM"
        Else
           r.Offset(0, -3).Value = ""
           r.Offset(0, -2).Value = ""
        End If
    Next r
Application.EnableEvents = True
End Sub
1
Adnan Shahid