![](/img/trans.png)
[英]Google Sheets: Move a row of data to another sheet based on cell value
[英]Google Sheets move a row to another sheet on 2 cell criteria in current row
我正在嘗試根據 2 個單元格條件從一張紙上移動一行:
(=IFERROR(VLOOKUP(A42,'01 - Master RO Entry Sheet':A,L,3, ""),""))
這是我所擁有的:
function onEdit(event) {
// assumes source data in sheet named "03 - Schedule"
// target sheet of move to named "History"
// getColumn with check-boxes is currently set to colu 2 or B
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "03 - Schedule" && r.getColumn() == 2 && r.getValue() == true && r.getColumn() == 3 && r.getValue() == "CLOSED"){
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("10 - Master History");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.deleteRow(row);
}
}
這是根據您對問題的更正的代碼更新
const archScheme = [{sourceSheet: '01 - Master RO Entry Sheet', targetSheet: '11 - Customer History', srcColumn: 'A'},
{sourceSheet: '02 - Estimates to Complete', targetSheet: '12 - Estimate History', srcColumn: 'A'}];
// the function moves row #rowNum from 'fromSheet' to 'toSheet'
function moveDataRow(rowNum,fromSheet,toSheet,ss){
if (rowNum==-1) return;
let scrSheet = ss.getSheetByName(fromSheet),
trgSheet = ss.getSheetByName(toSheet);
scrSheet.getRange(rowNum+':'+rowNum).moveTo(
trgSheet.getRange(trgSheet.getDataRange().getNumRows()+1,1));
scrSheet.deleteRow(rowNum);
// here we replace the names of the sheets in the formulas according to archScheme
let range = trgSheet.getRange(trgSheet.getDataRange().getNumRows()+':'+trgSheet.getDataRange().getNumRows()),
originalFormulas = range.getFormulas()[0],
originalValues = range.getValues()[0];
range.setValues([originalFormulas.map((cell,i) => { if (cell=='') { return originalValues[i] }
else
{ archScheme.forEach(sh => cell = cell.replace(sh.sourceSheet,sh.targetSheet))
return cell} } )])
}
function onEdit(e) {
let range = e.range,
row = range.rowStart,
col = range.columnStart,
scrSheet = range.getSheet();
if (scrSheet.getName()=='03 - Schedule' && col==2 && range.getValue()==true && range.offset(0,1).getValue()=='CLOSED'){
let ss = SpreadsheetApp.getActiveSpreadsheet(),
orderNum = range.offset(0,1-col).getValue();
moveDataRow(row,'03 - Schedule','10 - Master History',ss);
archScheme.forEach(sheets => {
moveDataRow(
[].concat(...ss.getSheetByName(sheets.sourceSheet).getRange(sheets.srcColumn+':'+sheets.srcColumn).getValues()).indexOf(orderNum) + 1,
sheets.sourceSheet,
sheets.targetSheet,
ss)
})
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.