Làm cách nào tôi có thể tự động thiết lập ô di động được cập nhật gần đây nhất trong hàng Bảng tính Google Docs?


21

Làm cách nào tôi có thể tự động đặt ô "được cập nhật lần cuối" trong bảng tính Google Docs?

Tôi muốn tạo một cột trong đó giá trị của các ô sẽ được tự động đặt thành khi hàng đó được sửa đổi lần cuối. Điều này có thể không? Làm thế nào để tôi làm điều này / tôi sử dụng tùy chọn nào để thiết lập điều này?

Tôi thấy một cách giải quyết cho MS Excel nhưng tôi nghĩ Google Docs nên có một cái gì đó tương tự, phải không? (ngón tay đan chéo)

Chúng tôi có nhiều người chỉnh sửa một tờ lớn. Chúng tôi có thể xem lịch sử sửa đổi, nhưng sẽ tốt hơn nếu chúng tôi có một cột "ngày cập nhật cuối cùng".


Bạn đã thử chưa Nếu nó hoạt động, sau đó vui lòng đánh dấu như vậy, xem webapps.stackexchange.com/faq#howtoask .
Jacob Jan Tuinstra

Câu trả lời:


20

Bạn có thể thử thêm Tập lệnh Google Apps để chụp khi một ô được chỉnh sửa và thêm dấu thời gian vào một ô khác. Đây là một câu trả lời trước đó tương tự: Dấu thời gian Bảng tính Google?

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
 if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
   var r = s.getActiveCell();
   if( r.getColumn() == 13 ) { //checks the column
     var nextCell = r.offset(0, 1);
     if( nextCell.getValue() === '' ) //is empty?
       var time = new Date();
       time = Utilities.formatDate(time, "GMT", "HH:mm:ss");
       nextCell.setValue(time);
   };
 };
}

có vẻ tốt tôi sẽ thử nó
cwd


14

=iferror(A1+B1+C1+D1+J1+K1+L1+"x",today())Bất cứ khi nào các ô trong hàng thay đổi công thức tính lại. với "x" trong phương trình, nó đảm bảo có lỗi. mà đáp lại, trả về ngày.


5
Đó là một kluge thú vị.
ale

1
Giải pháp đẹp nhất tôi từng thấy :)
mafonya

5
Theo như tôi có thể nói, điều này không thực sự hoạt động. Để rõ ràng, nó hoạt động, nhưng nó không được cập nhật cho các hàng cụ thể. Khi tôi đặt cái này vào và kéo nó qua nhiều hàng, sau đó chỉnh sửa mọi thứ ở bất cứ đâu trên trang tính, tất cả các hàng đều được tính toán lại và cập nhật.
nhgrif

1
Ồ Nó làm việc cho tôi. Đây là phiên bản rút gọn: = iferror (SUM (A2: O2) + "x", hôm nay ()) và kéo nó tự động cập nhật số hàng.
Ilya Evdokimov

1

Đây là kịch bản của tôi, đặt ở cột cuối cùng thông tin này:

  1. Chèn vào Ô (trong ô cuối cùng = lastcolumn cho hàng bạn sửa đổi) - Ngày trong GMT -3, nếu bạn muốn đặt tương tự trong TZ khác, chỉ cần sửa đổi -3 cho múi giờ đồng thời của bạn. Nếu bạn muốn đặt ngày tự động trong TZ mặc định của mình, chỉ cần sửa đổi điều này:

    var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    to
    var date = Utilities.formatDate(new Date());
    
  2. Chèn một bình luận với Cell + Người dùng sửa đổi nó.

  3. Xuất hiện một cửa sổ bật lên khi bạn cập nhật một cái gì đó. Chỉ xuất hiện với ActiveUser.

    function onEdit(event)
    {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var actSht = event.source.getActiveSheet();
        var actRng = event.source.getActiveRange();
    
        var index = actRng.getRowIndex();
        var dateCol = actSht.getLastColumn();
        var lastCell = actSht.getRange(index,dateCol);
        var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    
        lastCell.setValue(date);
        lastCell.setComment("Ultima Modificacion: " + actRng.getA1Notation() +' por '+Session.getActiveUser());
        ss.toast('Ultima Modificacion = '+ actRng.getA1Notation()+' por '+Session.getActiveUser());
    }
    

1

Tôi đã tạo một hàm viết Ngày mới khi ô được tham chiếu được sửa đổi. Trong trường hợp này, giá trị ô là TRUE hoặc FALSE nhưng bạn có thể chỉnh sửa nó thành bất kỳ giá trị nào.

function WhenUpdated(cell1) {
  if(cell1){
    return new Date();
  }
  else return null;
}

1

Đây là phiên bản tìm thấy cột bằng tiêu đề, thay vì mã hóa số cột và sử dụng múi giờ tùy chỉnh:

function updateModified(options) {
  var sheet = SpreadsheetApp.getActiveSheet();
  if (options.sheetName && sheet.getName() != options.sheetName) {
    return;
  }

  var modifiedColumnName = options.modifiedColumnName || 'Modified';
  var header = sheet.getDataRange().offset(0, 0, 1).getValues()[0];
  var modifiedColumn;
  for (var i=0; i < header.length; i++) {
    if (header[i].trim() == modifiedColumnName) {
      modifiedColumn = i + 1;
      break;
    }
  }
  if (typeof modifiedColumn != 'number') {
    throw new Error("Can't find column with name: " + modifiedColumnName);
  }

  var activeCell = sheet.getActiveCell();
  if (activeCell.getColumn() == modifiedColumn) {
    return;
  }

  var modifiedCell = sheet.getRange(activeCell.getRow(), modifiedColumn);
  var formattedDate = Utilities.formatDate(new Date(), "America/Los_Angeles", "M/dd/yy HH:mm");
  modifiedCell.setValue(formattedDate);
}

function onEdit() {
  updateModified({sheetName: 'Jobs'});
}

Để sử dụng UTC, chỉ cần thay đổi múi giờ thành UTC.


-4

Chỉ cần gõ "Cập nhật lần cuối:" trong một ô và gõ "= now ()" trong ô bên cạnh nó! Điều đó nên làm công việc!


1
Điều này sẽ chỉ hoạt động trên mỗi ô, không phải trên mỗi hàng như đã nêu trong câu hỏi
1owk3y
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.