Cap tanggal saat mengedit baris dalam spreadsheet

0

Saya memiliki spreadsheet yang membutuhkan cap tanggal untuk setiap baris segera setelah ada perubahan yang dibuat dalam sel di dalam baris itu. Misalnya, saya mengubah sesuatu pada sel B14 atau E14 atau G14 dan tanggal hari ini muncul di K14. Jelas, saya harus dapat memilih berbagai baris dan kolom yang akan terpengaruh.

Namun, bagian yang rumit dalam kasus saya adalah bahwa saya perlu tanggal hari ini untuk HANYA muncul ketika saya menambah atau mengubah informasi dalam sel. Jika saya hanya menghapus informasi dari sel saya perlu tanggal tetap sama seperti sebelum menghapus info.

PS File ini adalah spreadsheet excel tetapi akan digunakan di Google Drive.


sumber
1
Apa yang Anda maksud dengan "itu akan digunakan di Google Drive"? Apakah Anda akan mengubahnya ke format Google Sheets atau Anda akan menggunakan Mode Kompatibilitas Office?
Rubén
Karena ini untuk file Excel, tidak ada bedanya di mana Anda menyimpannya. Microsoft Excel di luar topik di sini. Ini harus ditanyakan pada Pengguna Super .
ale

Jawaban:

1

Jawaban ini adalah jika Anda langsung menuju ke Google Sheet.

Saya pikir ini akan membantu membuat Anda pergi ke arah yang benar. Saya tidak jelas apakah Anda mengatakan bahwa bidang yang akan Anda pantau tersebar di sekitar lembar, atau jika sel yang tidak berdekatan yang Anda referensikan hanyalah contoh di dalam rentang. Jika Anda memiliki sel yang ditaburi, Anda mungkin harus membuat beberapa "rentang tontonan" seperti yang telah saya catat dalam kode, dan memeriksa apakah sel yang diedit berada di dalam setidaknya satu rentang, jika tidak kembali dari fungsi.

Saya ingin mencatat bahwa saya tidak berusaha terlalu keras untuk membuat pekerjaan ini untuk mendukung penghapusan semua nilai dari rentang multi-sel.

Juga, perhatikan bahwa Anda harus masuk ke Alat -> Editor Skrip di dalam Google Sheet, dan kemudian Sumber Daya -> Pemicu (menu mungkin berbeda tergantung apa yang telah Anda lakukan di sana sebelumnya) dan menambahkan pemicu "onEdit ()" ke Lembar.

Kemudian, fungsi Anda akan seperti ini

function onEdit(e){
  var DateCol = "K";
  var DeletedColNote = "L";
  var curDate = Utilities.formatDate(new Date(), "GMT-5", "MM/dd/yyyy") 
  var editRange = e.range;
  var rowIndex = editRange.getRowIndex();
  var colIndex = editRange.getColumnIndex();

  // May need to set up multiple ranges like this and check all ranges if
  // checked fields are not in adjacent cells
  var watchRange = { // B2:G20
    top : 2,         // start row
    bottom : 20,     // end row
    left : 2,        // start col
    right : 7        // end col
  };
  // Exit if we're out of range
  if (rowIndex < watchRange.top || rowIndex > watchRange.bottom) return;
  if (colIndex < watchRange.left || colIndex > watchRange.right) return;

  var currentValue = editRange.getValue();
  currentValue = currentValue.replace(/^\s+|\s+$/g,""); //"trim" kludge

  if (currentValue.length == 0)
  {
    // Set a column to show when data was deleted
    SpreadsheetApp.getActiveSheet().getRange(DeletedColNote + rowIndex).setValue("Deleted: " + curDate);
  }
  else
  {
    // Set a column to show last edit date
    SpreadsheetApp.getActiveSheet().getRange(DateCol + rowIndex).setValue("Edited: " + curDate);
    SpreadsheetApp.getActiveSheet().getRange(DeletedColNote + rowIndex).setValue("");
  }
}
pengemis
sumber
1

Sayangnya, VBA tidak port ke Google Sheets, tetapi jika persyaratan Google Sheets dihapuskan, itu cukup sederhana untuk dilakukan dengan VBA.

Lampirkan kode ini ke acara WorkSheet_Change untuk lembar kerja yang menarik ...

Private Sub Worksheet_Change(ByVal Target As Range)
Dim RngToMark As Range
' define the range you want to track changes for
    Set RngToMark = ActiveSheet.Range("A1:G30")
' make sure the change occurred inside the range
    If Intersect(Target, RngToMark) Is Nothing Then Exit Sub
' ignore deleting the contents
    If Target.Value = "" Then Exit Sub
' mark the row as changed
    ActiveSheet.Range("K" & Target.Row).Value = Format(Now(), "MMM-DD-YYYY")

End Sub

Untuk sampai ke lokasi yang benar untuk memasukkan ini ...

  1. Di VBEditor, klik dua kali pada nama lembar kerja di bawah "Microsoft Excel Objects"
  2. Kemudian pilih Lembar Kerja dari drop-down tangan kiri
  3. Kemudian pilih Ubah dari drop down kanan
Tua sekali
sumber