基于来自另一列的排名值的条件格式

时间:2019-03-10 10:32:56

标签: google-sheets gs-conditional-formatting

我创建了一个自动计分的Google表格电子表格。在总计(V)列中,我使用了条件格式来使用颜色对团队从最高到最低进行排名。

Image of the spreadsheet for context

Link to spreadsheet (comment-only)

我想根据V的值对第一列(A)进行有条件的格式设置,或者自动将条件格式从A转换为V,以使 A的颜色与V相同。但是,我不确定该怎么做:我尝试将条件格式从A粘贴到V,这是行不通的。我已经看到了基于适用于其他单元格/列的逻辑运算符的条件格式示例,但我认为这不适用于此处。

任何指导将不胜感激!

1 个答案:

答案 0 :(得分:0)

通过使用Google脚本,您可以将以下两个脚本应用于工作表以实现所需的功能。

首先,用于在第V列中添加新数据的OnEdit()。

function onEdit(e) { //When a cell is edited
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var cellColumn = e.range.getColumn(); // Cell column that was edited
  var cellRow = e.range.getRow(); //Cell row that was edited

  if(cellColumn == 22){ //If the edited cell is in column 22 i.e. column V
    var editedCellBackground = ss.getActiveSheet().getRange(cellRow, cellColumn).getBackground(); //get color of cell in column V
    ss.getActiveSheet().getRange(cellRow, 1).setBackground(editedCellBackground); //set color of A to corresponding color in column V
  }else{ //if the edited cell is not in column V
    //do nothing
  }
}

第二,OnOpen()用于当工作表中已有数据时,应在打开工作表时对其进行格式化。工作表的名称可能需要更改,因为它当前设置为“ Sheet1”。

function onOpen() { //when sheet is open
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var row = 1;

  while(ss.getSheetByName("Sheet1").getRange(row, 22).getValue() != ""){ //while there is another row with data in column V (given by 22)
    var cellBackground = ss.getSheetByName("Sheet1").getRange(row, 22).getBackground(); //get value of color in column V
    ss.getSheetByName("Sheet1").getRange(row, 1).setBackground(cellBackground); //set color value of column A to corresponding value of V
    row++; //go to next row
  }
}