
「ステータス日付」というラベルの付いた列のあるスプレッドシートがあり、その列には他のセルがいくつか並んでいます。そのセルの中には、他の日付が入っているもの、テキストだけのもの、そして一連の条件が真かどうかを評価するものがあり、真の場合、結果は「はい」または「いいえ」の回答となり、その回答に基づいてそのセルを埋めるように条件付き書式設定されています。
「ステータス日付」セル値で実現したいのは、その行の他のセルが変更された場合、他のセルの値に基づく数式を含むセルも含めて、情報の編集または追加/削除により、そのセル値が今日の日付で入力され、「ロック」されるようにすることです。後で同じ行で何か他のものが変更されるまで、この値は静的のままである必要があります。他のセル値はいずれも「ステータス日付」列では評価されないため、数式を機能させるために列 A または列 B に移動する必要がある場合、または VBA マクロを使用する必要がある場合でも、問題にはなりません。
答え1
VBAメソッド
このタイプの自動タイムスタンプは、Excel のバックグラウンドで非常に基本的な VBA を記述することによってのみ実際に可能です。開始するには、たとえば次のリンクを参照してください。
https://docs.microsoft.com/en-us/office/troubleshoot/excel/run-macro-cells-change
残念ながら、特にファイルを共有する場合、VBA マクロは常に選択できるわけではありません。一部のエンタープライズ セキュリティ設定ではマクロが完全にブロックされます。また、基本的なプログラミングに慣れていない場合、VBA をコーディングするのは困難です。
データ検証タイムスタンプ方式
幸いなことに、VBA を使用せずに Excel でタイムスタンプを設定するための回避策が 2 つあります。1 つは、リスト タイプのデータ検証を使用して現在の時刻を「サンプリング」することです。1 つの参照セルまたは名前付き範囲を =TODAY() または =NOW() に設定します。これは、NOW/TODAY が揮発性関数であるため、セルを編集するたびに (つまり再計算するたびに) 自動的に更新されます。日付入力セルのデータ検証 (データ リボン上) を設定し、リストを選択して TODAY/NOW セルを参照します。これにより、最新の再計算を反映した時刻のドロップダウン リストが表示されます。ドロップダウンから選択すると、時刻値がコピーされ、「ロック」されますが、自分で選択する必要があります。
循環式法
もう 1 つの方法では、循環式/反復計算を許可するように Excel 設定を変更する必要がありますが、これはグローバル設定であるため理想的ではありません。ただし、これは非常にうまく機能し、質問で期待されているとおりに機能します。こちらをご覧ください。
https://howtoexcelatexcel.com/blog/create-a-timestamp-in-excel-with-formulas/
長所と短所
VBA 方式は非常に信頼性が高く、単一のユーザーや、セキュリティ設定に基づいてマクロを許可することに慣れているユーザーに最適です。基本的なコーディング スキルが必要です。また、マクロを実行すると、元に戻す履歴は通常失われます。
データ検証方法は実装が非常に簡単で、特別な設定やセキュリティの許可なしですぐに使用できます。ただし、ユーザーは、行に他の変更を加えた後、ドロップダウン セルを使用してタイムスタンプを一貫して使用する必要があります。
循環式メソッドでは、他のセルにデータを入力するとタイムスタンプが自動的に反映されますが、直感的でない動作を伴う反復処理のグローバル Excel 設定を有効にする必要があります。設定はブックに保存されますが、このブックの前に他のブックを開くと、設定は反復処理なしにリセットされます。このブックを開いても、設定は元に戻りません。最初にこのブックを開く必要があります。また、他のブックを開いて保存すると、それらのファイルとともにグローバル設定も保存され、(軽微な)問題になる可能性があります。ほとんどの場合、通常のブックで循環式を入力するとエラー報告が無効になります。
Ps. ショートカットキー方式
最も簡単な方法が IT 担当者の視点から見ると必ずしも最適ではない場合もありますが、エンド ユーザーにとっては有効です。次のショートカットのいずれかを押すと、現在の時刻または日付を現在のセルに値として挿入できます。
CTRL and ; (to insert the current date)
CTRL SHIFT and : (to insert the current time)