根据单元格内容移动 excel 行
Move excel row based on cell content
我有一个 excel sheet,我想将整行移动到另一个 sheet 并根据单元格内容将其从原始行中删除
这是我的代码:
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s =event.source.getActiveSheet();
var r =event.source.getActiveRange();
if(s.getName()=="Main" && r.getColumn ()== 7&& r.getValue () == "Completed"){
var row =r.getRow();
var numColumns= s.getLastcolumn();
var targetsheet= ss.getSheetByName("Completed");
var target=targetSheet.getRange(targetSheet.getLastRow()+ 1, 1);
s.getRange( row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
if(s.getName () == "Main" && r.getColumn () == 7 && r.getValue () == "Pending"){
var row =r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Pending");
var target = targetSheet.getRange( targetSheet.getlastRow ()+ 1, 1);
s.getRange( row, 1, 1, numColumns).moveTo(target);
s.deleteRow( row);
}
if(s.getName ()=="Main" && r.getColumn ()==7 && r.getValue () == "Hold") {
var row= r.getRow( );
var numcolumns =s.getLastColumn()
var targetSheet=ss.getSheetByName("Hold" );
var target = targetSheet.getRange(targetSheet.getLastRow()+ 1, 1);
s.getRange(row ,1,1,numColumns).moveTo(target);
s.deleteRow(row);
}
}
我正在尝试编辑 onEidit 函数但是这段代码对我不起作用
这是“主要”sheet
描述
我根据自己的喜好简化了您的脚本。这对我有用。您必须小心确保在第 7 列中键入正确的 sheet 名称。我会使用数据验证下拉列表来防止拼写错误。
脚本
function onEdit(event) {
try {
let sheets = ["Completed","Pending","Hold"];
let spread = event.source;
let source = event.range.getSheet();
if( source.getName() === "Main" ) {
if( event.range.getColumn() === 7 ) {
if( sheets.indexOf(event.value) < 0) return;
let row = event.range.getRow();
let numColumns = source.getLastColumn();
let target = spread.getSheetByName(event.value);
target = target.getRange(target.getLastRow()+1,1);
source.getRange(row,1,1,numColumns).moveTo(target);
source.deleteRow(row)
}
}
}
catch(err) {
console.log(err);
}
}
参考
我有一个 excel sheet,我想将整行移动到另一个 sheet 并根据单元格内容将其从原始行中删除 这是我的代码:
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s =event.source.getActiveSheet();
var r =event.source.getActiveRange();
if(s.getName()=="Main" && r.getColumn ()== 7&& r.getValue () == "Completed"){
var row =r.getRow();
var numColumns= s.getLastcolumn();
var targetsheet= ss.getSheetByName("Completed");
var target=targetSheet.getRange(targetSheet.getLastRow()+ 1, 1);
s.getRange( row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
if(s.getName () == "Main" && r.getColumn () == 7 && r.getValue () == "Pending"){
var row =r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Pending");
var target = targetSheet.getRange( targetSheet.getlastRow ()+ 1, 1);
s.getRange( row, 1, 1, numColumns).moveTo(target);
s.deleteRow( row);
}
if(s.getName ()=="Main" && r.getColumn ()==7 && r.getValue () == "Hold") {
var row= r.getRow( );
var numcolumns =s.getLastColumn()
var targetSheet=ss.getSheetByName("Hold" );
var target = targetSheet.getRange(targetSheet.getLastRow()+ 1, 1);
s.getRange(row ,1,1,numColumns).moveTo(target);
s.deleteRow(row);
}
}
我正在尝试编辑 onEidit 函数但是这段代码对我不起作用
这是“主要”sheet
描述
我根据自己的喜好简化了您的脚本。这对我有用。您必须小心确保在第 7 列中键入正确的 sheet 名称。我会使用数据验证下拉列表来防止拼写错误。
脚本
function onEdit(event) {
try {
let sheets = ["Completed","Pending","Hold"];
let spread = event.source;
let source = event.range.getSheet();
if( source.getName() === "Main" ) {
if( event.range.getColumn() === 7 ) {
if( sheets.indexOf(event.value) < 0) return;
let row = event.range.getRow();
let numColumns = source.getLastColumn();
let target = spread.getSheetByName(event.value);
target = target.getRange(target.getLastRow()+1,1);
source.getRange(row,1,1,numColumns).moveTo(target);
source.deleteRow(row)
}
}
}
catch(err) {
console.log(err);
}
}
参考