我正在使用此處發布的代碼,該代碼根據列的值移動行,但我想對其進行編輯,以便它執行相反的操作:根據行的值將列移動到新作業表。這是我到目前為止所擁有的:
function onEdit(event) {
// source data in sheet named Blocks
// sheet column is moved to named Ordered
// test row with word "Done" is row 1
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Blocks" && r.getRow() == 1 && r.getValue() == "Done") {
var column = r.getColumn();
var numRows = s.getLastRow();
var targetSheet = ss.getSheetByName("Ordered");
var target = targetSheet.getRange(targetSheet.getLastColumn() 1, 1);
s.getRange(column, 1, 1, numRows).copyTo(target);
s.deleteColumn(column);
}
}
問題是,當我測驗它時,它只移動了該列的第一行。我希望它移動整個列,然后將其從原始作業表中洗掉。
誰能告訴我哪里出錯了?
uj5u.com熱心網友回復:
移動選定的列
function onEdit(e) {
//e.source.toast('Entry');
var sh = e.range.getSheet();
if(sh.getName() == "Blocks" && e.range.rowStart == 1 && e.value == "Done") {
//e.source.toast('Ordered1')
var tsh = e.source.getSheetByName("Ordered");
var target = tsh.getRange(1,tsh.getLastColumn() 1);
sh.getRange(2, e.range.columnStart, sh.getLastRow() -1).copyTo(target);
sh.deleteColumn(e.range.columnStart);
}
}
我在第一行使用了 Active/Done 資料驗證,我只從第二行移動到最后一行,然后洗掉了包括經過驗證的單元格在內的整個列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/408571.html
標籤:
