簡體   English   中英

將行移動到另一個工作表並清除內容/ ArrayFormula

[英]Moving Row to another sheet and clear content/ ArrayFormula

短篇小說:如何修改下面的腳本以清除行中多個單元格中的內容? 例如第 7、13、24、25、34 行

長話短說(如果有更好的解決方案):

我一直在使用此腳本根據值在工作表之間移動行,而不保留格式,因此下一張工作表有自己的格式並且條件格式不會堆疊。

  function onEditComplete(e) {
 //e.source.toast('Entry');
 //Logger.log(JSON.stringify(e));
 const sh=e.range.getSheet();
 if(sh.getName()=="Sheet1a" && e.range.columnStart==5 && e.value=="Completed") {
  //e.source.toast('Conditional');
 var tsh=e.source.getSheetByName("Sheet2a");
 tsh.getRange(tsh.getLastRow()+1,1,1,sh.getLastColumn()).setValues(sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()). 
getValues());
sh.deleteRow(e.range.rowStart);}
  }

我現在遇到的問題是我正在使用公式。 我有 4 張。 Sheet1aSheet1b之間有 vlookup 公式。 Sheet2aSheet2b之間也將具有相同的 Vlookup 公式。

=ArrayFormula(IFERROR(VLOOKUP(PARTS!$B1:$B,{PARTS!$B1:$B,PARTS!$AF1:$BD&","&PARTS!$AJ1:$AJ&","&PARTS!$AN1:$AN&","&PARTS!$AR1:$AR&","&PARTS!$AV1:$AV&","&PARTS!$AR1:$AR&","&PARTS!$AZ1:$AZ},2,0)))

由於它是一個 ArrayFormula,只要設置了Sheet2aSheet2b ,就應該只在特定單元格中的內容移動之前清除它,因為它作為文本值傳輸並破壞Sheet2aSheet2b中的公式。

添加清除第 7、13、24、25、34 行中某些單元格的功能

function onEdit(e) {
  e.source.toast('Entry');
  Logger.log(JSON.stringify(e));
  const sh = e.range.getSheet();
  if (sh.getName() == "Sheet0" && e.range.columnStart == 5 && e.value == "Completed") {
    e.source.toast('Conditional');
    let cols = [7, 13, 24, 25, 34];
    let row = sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).getValues().flat().map((e, i) => {
      if (~cols.indexOf(i + 1)) {
        return null;
      } else {
        return e;
      }
    })
    var tsh = e.source.getSheetByName("Sheet1");
    tsh.getRange(tsh.getLastRow() + 1, 1, 1, sh.getLastColumn()).setValues([row]);
    sh.deleteRow(e.range.rowStart);
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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