1

我有一个Google Drive电子表格与两张。谷歌驱动器电子表格公式检查值

Sheet 1有三列:namedatetype

Sheet 2也有三列:namedateproposed

我想编写一个脚本,将运行,当我编辑这片和突出proposedSheet 2(如果条件得到满足)。

该脚本应取Sheet 2的名称并查找Sheet 1上的所有相关记录。然后,从这些记录中,找到那些有特定type(在这种情况下,“最后日期”,并从这些行,返回MAX()日期。如果该日期Sheet 2proposed列匹配,然后突出显示proposed

我我已经能够彩色proposed如果date的比赛,但我需要帮忙基础上,提到的标准,正确的日期为date

是否有更好的/可在Sheet 2 date写一个公式来从Sheet 1得到所需要的数据吗?或者,我是否需要编写一个脚本来填充proposed c在更改为Sheet 1之后的列?

无论是哪种情况,我该怎么做?我的搜索没有帮助我达到目标。

我试图写出像这样的单元格公式:=arrayformula(IF('Sheet 1'!C2:C500="Last Date",min(ROW('Sheet 1'!C2:C500)),""))和许多变化,但没有产生我需要的结果。

我可以很容易地写在Excel,但不能找出相当于Google Drive。下面是做这件事Excel一种方式:

=MAX(IF(2name=1nameRage, IF(1typeRange = "Last Date",1dateRange)))

这里是我的功能来检查的名称,并调用相关功能。

function onEdit(e){ 
    var sheet = SpreadsheetApp.getActiveSheet().getSheetName(); 
    if(sheet.toString()=="Sheet 2"){ 
     dataCheck(e); 
    }else if(sheet.toString()=="Sheet 1"){ 
     colorItems("Sheet 2","dataRange"); 
    } 
} 
function dataCheck(e){ 
    var col = e.range.getColumn(); 
    if(col==2){ 
     var row = e.range.getRow(); 
     var cell = SpreadsheetApp.getActiveSheet().getRange(row,col); 
     var bgc = cell.getBackground(); 
     var cProp = cell.getValue(); 
     var cLast = SpreadsheetApp.getActiveSheet().getRange(row,col+1).getValue(); 
     if(cLast.toString()==cProp.toString() && cProp.toString()!=""){ 
      cell.setBackgroundRGB(190, 190, 190); 
     }else if (bgc=="#bebebe"){ 
      cell.setBackgroundRGB(255, 255, 255); 
     } 
    } 
} 
function colorItems(sheetName,nameRange){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName(sheetName); 
    var data = sheet.getDataRange(); 
    var numRows = data.getNumRows(); 

    var pDates = ss.getRangeByName(nameRange); 

    var pDateObject = getRowsData(sheet, pDates); 

    for (var i = 0; i <= numRows; i++) { 
     var cell = sheet.getRange(i+2, 2, 1, 1); 
     var cLast = pDateObject[i].last; 
     var cProp = pDateObject[i].proposed; 
     if(!isCellEmpty(cProp)){ 
      if(cLast.toString() ==cProp.toString()){ 
       cell.setBackgroundRGB(190, 190, 190); 
      } 
     }else{ 
      cell.setBackgroundRGB(255, 255, 255); 
     } 
    } 
} 

回答

1

我发现,讽刺的是,通过复制我的Excel公式:

=arrayformula(MAX(IF('Sheet 1'!C2:C500="Last Date",IF(D2='Sheet 1'!A2:A500,'Sheet 1'!B2:B500)))) 
相关问题