背景:
私は毎日コストを追跡するシートを作成しようとしています。毎日現在の日付を入力する代わりに、Costs
列に入力した内容に基づいて、現在の日付をシートに保存する必要があります。
列C
のセルには、次の式を使用します。
=if(D2="","empty",TODAY())
この関数の問題は、毎日更新されることです。写真からわかるように、C
の日付は最新の日付として表示されますが、そこにある情報は数日前に挿入されました。
質問:
列C
のセルのコンテンツが列D
への挿入コンテンツの日付のみに留まり、毎日更新されないようにするにはどうすればよいですか?
これは Googleスプレッドシートにタイムスタンプを作成する方法はありますか に関連しているため、私の答えはそれらに似ていますが、設定に適合しています。
次のスクリプトを使用します([ツール]> [スクリプトエディター])。
function onEdit(e) {
if (e.range.getSheet().getSheetName() == 'Sheet1' && e.range.getColumn() == 4) {
e.range.offset(0,-1).setValue(e.value.length>0 ? new Date() : '');
}
}
スクリプトはすべての編集で、編集が「Sheet1」(関連するシートの名前をここに入力する)および列4(つまりD)に対して行われたかどうかをチェックします。その場合、セルの左側(offset(0,-1)
)に現在の日付が直接入力されます。編集によって列Dからコンテンツが削除されない限り、次に、対応するCセルが空になります。
押す習慣を作る Ctrl+; 列Dの編集時に列Cに挿入します。これにより、現在の日付が挿入されます。