データが別のセルに入力されたときにセルを自動入力するには、今日の日付が必要です


1

セルB5-B39にデータが入力されるたびに、セルC5-C39が今日の日付を自動入力するようにします。

私はそれを使用して動作するようにしようとしましたが=TODAY()、式を構造化する方法はありません。


2
まあ、あなたは=TODAY()それを再計算し続けるので、単に使用することはできません...私はあなたがVBAでこれを行う必要があると信じています。「マクロ」または関数を設定し、他のセルに入力したときにトリガーする必要があります(方法はわかりません-すみません:()
同上

1
私は同意します、これは私にとってVBAソリューションのように聞こえます。
カイル

= TODAY()は文字通り毎日変更されますが、そうではありませんか?
カイルヒンケバイン

回答:


0

これを行う最も簡単な方法は、ユーザー定義関数を使用することです。この関数は、それが参照するセルが変更されると更新されるため、イベントに関連付ける必要はありません。

問題の機能は次のとおりです。

Function Updating_Date(dependent_cell as Range) As Date
  Updating_Date = Date
End Function

そのコードをワークブックのモジュールに配置した後、単純に入力=Updating_Date(B5)C5てコピーすることができます。これにより、列Cの値が変更されるたびにC5の日付が更新されます。

列Bのセルが空白でない場合にのみ日付を表示するには、列Cのセルにif式を適用できます。これ、他の質問で触れました。私がそこに示したのと同じ条件を入力し(つまりISBLANK(B5)""、条件が真の場合は戻り値を空の文字列()にしUpdating_Date(B5)、条件が偽の場合はUDF()にします。


したがって、これを現在のワークブックの左側のドロップダウンからシートに貼り付け、セルC5に数式を入力すると、#NAME?
カイルヒンケバイン

繰り返しますが、VBAエディターウィンドウは次のようになり、ワークシートは次のようになります。セルはあなたの質問とまったく同じではないことに注意してください。しかし、
括弧

だから私は最初にコードをモジュールに入れていませんでした。表示される日付を取得できますが、列bに何も表示されていない場合でも表示され、列bから何かを削除しても日付は残ります。
カイルヒンケバイン

関数内に条件を追加して、セルが空かどうかを確認することができます@kyle
eirikdaude

どういうわけかこれを修正して、あなたが私に提供したものにそれを追加してもいいでしょうか。(私は別の行にこのコードを配置しようとしているが、行をスキップする方法を見つけ出すことはできません)。.. If CellsAreEmpty(Range("A1"), Range("B7"), Range("C9")) Then Debug.Print "Do stuff
カイルHinkebein

0

以下は、セル「A」に変更があるたびに、セル「B」に今日の日付を入れます。

Private Sub Worksheet_Change(ByVal Target As Range)
' Auto Date
Dim Cell As Range
For Each Cell In Target
    If Cell.Column = Range("A:A").Column Then
        If Cell.Value <> "" Then
            Cells(Cell.Row, "B").Value = Int(Now)
        Else
            Cells(Cell.Row, "B").Value = ""
        End If
    End If
Next Cell
End Sub

この動作を発生させるワークシートのVBAモジュールにこのコードを配置する必要があります。


-2

AFIK、VBA経由でこれを行う必要があります。ワークシートの変更を監視し、セルB5〜B39の変更のみを除外し、それに応じてCのセルを更新する関数を作成できます。

更新:おそらくalt-F11を使用してVBAにアクセスすることがわかります。

Sheet1というExcelオブジェクトまたは関心のあるシート(ツリーリストの左上)をダブルクリックして、そのシートのコードを取得します。

2つのドロップダウンからワークシートと変更を選択します。したがって、次のようなコードが得られます。

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

変更されたセルへの参照である変数「ターゲット」が利用可能になりました。

これらの行の間にいくつかのコードを追加します。

debug.Print Target

ctrl-Gを押してイミディエイトウィンドウを表示します

ワークシートでいくつかの変更を行ってコードに戻ると、入力したデータがイミディエイトウィンドウに表示されます。

次に、言うようにコードを変更if Target.すると、Target変数に関連する可能なプロパティのドロップダウンが表示されます。

いくつかの変更により、これを取得できます。

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 And (Target.Row > 4 And Target.Row < 40) Then
        Debug.Print Target.Value
    End If

End Sub

興味のある範囲の変更のみを印刷するようになりました。

セルの値を変更する方法を知りたい場合は、マクロを手動で記録し、コードを調べます。うまくいけば、あなたは今に行くのに十分です そうでない場合はお知らせください。


おもしろい、私がセーブを打つとすぐにコメントなしで投票した。あなたが好きなら私に投票することができますが、それは答えです。
ジュリアンナイト

これは答えではありません。これは、OPがVBAを調べる必要があるというコメントです。答えは、OPの問題に対する潜在的な解決策を持っています。
カイル

VBAを必要とする別のプロジェクトがあるので、VBAでの作業を開始しようとしていますが、その方法についてはわかりません。VBAとは何か、それを開く方法はわかっています。このような機能を実行するためにスクリプトに入力する内容の簡単な例がありますか?
カイルヒンケバイン

実際、コードを書いていませんが、答えは確かにそこにあります。それは動作し、私は前にそれをやったことがあります。
ジュリアンナイト

それで、あなたがこれを適切に機能させるためにあなたが提供したものと一緒に、あなたの上記の答えに似たものを使用する必要がありますか?上記は日付を提供していますが、列Bが空白の場合でも表示されています。あなたは今、列Bを見て、私も自分の無知、合計初心者を許して、何とか2にブレンドする必要があるとそれを得る/学ぼうと考えのようにそれはほとんどらしいのコードの最初の部分のようです...
カイルHinkebein
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.