別のセルが変更されたときに自動的に現在のタイムスタンプでExcelのセルを更新します。
エクセルのスプレッドシートで、別のセルが変更されたときに、現在の日時で自動的にセルを更新したい(更新のタイムスタンプのようなもの)のですが、このような場合はどうすればいいのでしょうか?
各行にタイムスタンプがあります。行内の先行するセルの1つが更新されたらすぐに更新したいです。
その方法について何かヒントはありますか?
エクセルのスプレッドシートで、別のセルが変更されたときに、現在の日時で自動的にセルを更新したい(更新のタイムスタンプのようなもの)のですが、このような場合はどうすればいいのでしょうか?
各行にタイムスタンプがあります。行内の先行するセルの1つが更新されたらすぐに更新したいです。
その方法について何かヒントはありますか?
Now()の値を持つセルを作成します。このセルの書式はお好きなように設定してください。例えば、yyyy/mm/dd HH:mm:ssのように、24時間以内の完全なタイムスタンプを取得します。
自動再計算(デフォルト)が設定されている限り、他のセルが変更されるたびに、新しいタイムスタンプを取得します。
さらに考えてみると、もしワークブックを開く、印刷などのアクションを含まないアクションによってのみ更新されるハードコード化されたタイムスタンプが欲しいのであれば、ワークシートの_changeに添付されたマクロを作成することができます。ターゲット・セルをテキストとして設定し、前のように特定の書式設定をします。次のようにします。Sheet1.Cells[].Value = Text(Now(), “yyyy/mm/dd HH:mm:ss”) のようなものを使います。
これを起動時にロードするテンプレートに入れておけば、二度と考える必要はないでしょう。
http://chandoo.org/wp/2009/01/08/timestamps-excel-formula-help/ に再帰式を使ったタイムスタンプの実装方法の詳細があります。これらは非常にうまく動作します。
この記事では、最初に循環式を有効にし(デフォルトではオフ)、次に特定のセルに値が挿入された時に自動的にタイムスタンプを挿入する循環式を作成する方法を概説しています。
タイムスタンプを格納するセルがB3で、ウォッチするセルがC3の場合、数式は次のようになります。
=IF(C3<>"",IF(B3="",NOW(),B3),"")
つまり、C3が空でない場合、B3をNOW()に設定します(B3が空の場合)。
0x1&
これは、アップデートやセーブで安定しているようです。