簡體   English   中英

Google表格將一行移動到當前行中2個單元格條件的另一張表格

[英]Google Sheets move a row to another sheet on 2 cell criteria in current row

我正在嘗試根據 2 個單元格條件從一張紙上移動一行:

  1. 復選框被選中 (TRUE)
  2. 單元格文本 = CLOSED,但此單元格實際上具有對另一張工作表的(=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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM