
セル B5 ~ B39 にデータが入力されるたびに、セル C5 ~ C39 に今日の日付が自動入力されるようにします。
を使用して動作させようとしました=TODAY()
が、数式の構造化方法がわかりません。
答え1
これを行う最も簡単な方法は、ユーザー定義関数を使用することです。この関数は、参照するセルが変更されると更新されるため、イベントに関連付ける必要はありません。
問題に対する関数は次のようになります。
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)
) を入力し、条件が true の場合は戻り値が空の文字列 ( ) になり、条件が false の場合は""
UDF ( ) になるようにします。Updating_Date(B5)
答え2
次のコードは、セル「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 モジュールに配置する必要があります。
答え3
これは VBA なしでも実行できます。B 列に入力された値に基づいて、C 列に今日の日付を入力する必要がありました。この数式を使用すると、正しく挿入されます。
=IF(ISBLANK(B2)," ",NOW())
私はこれをC2セルに配置しました。これはC列の開始点だからです。開始する列のセルであればどこでも構いません。次に、B2参照が値を入力する列とセルに置き換えられていることを確認してください。たとえば、開始セルがF3の場合、数式を次のように変更する必要があります。
=IF(ISBLANK(F3), " ",NOW()).
対応する日付セルが K3 の場合は、そこに数式を配置します。(最初のセルに数式を配置したら、その数式を列の残りのセルにドラッグできます。)
この数式は、「キックオフ」セルに値が入力されるまで日付セルを空のままにします。値が入力されると、日付が追加されます。値が削除されると、Excel は日付を自動的に削除します。したがって、完璧ではありませんが、より高度なものが必要な場合は、Excel の専門家またはこれを処理してくれるプログラムが必要になる可能性があります。
答え4
AFIK、これは VBA 経由で行う必要があります。ワークシートの変更を監視し、セル B5 ~ B39 の変更のみをフィルターし、それに応じて C のセルを更新する関数を作成できます。
更新: おそらく、Alt + F11 を使用して VBA に入ることをご存知でしょう。
Sheet1 という Excel オブジェクトまたは興味のあるシート (左上のツリー リスト内) をダブルクリックして、そのシートのコードを表示します。
2 つのドロップダウンから [ワークシート] と [変更] を選択します。次のようなコードが表示されます。
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
変更されるセルへの参照である変数「Target」が使用できるようになりました。
これらの行の間にコードを追加します。
debug.Print Target
Ctrl+Gを押すと、即時ウィンドウが表示されます
ワークシートにいくつか変更を加えてコードに戻ると、入力したデータがイミディエイト ウィンドウに表示されます。
ここでコードを次のように変更するif 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
これにより、関心のある範囲の変更のみが印刷されるようになりました。
セルの値を変更する方法を知りたい場合は、手動で変更するマクロを記録して、コードを調べることができます。これで十分な情報が得られると思います。そうでない場合はお知らせください。