web-dev-qa-db-ja.com

他のセルのコンテンツに基づいてセルに現在の日付を挿入します

背景:

私は毎日コストを追跡するシートを作成しようとしています。毎日現在の日付を入力する代わりに、Costs列に入力した内容に基づいて、現在の日付をシートに保存する必要があります。

enter image description here

Cのセルには、次の式を使用します。

=if(D2="","empty",TODAY())

この関数の問題は、毎日更新されることです。写真からわかるように、Cの日付は最新の日付として表示されますが、そこにある情報は数日前に挿入されました。

質問:

Cのセルのコンテンツが列Dへの挿入コンテンツの日付のみに留まり、毎日更新されないようにするにはどうすればよいですか?

4
Kristof Pal

これは Googleスプレッドシートにタイムスタンプを作成する方法はありますか に関連しているため、私の答えはそれらに似ていますが、設定に適合しています。

自動挿入:Appsスクリプトが必要

次のスクリプトを使用します([ツール]> [スクリプトエディター])。

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に挿入します。これにより、現在の日付が挿入されます。

9
user79865