如何根据单元格的背景颜色更新数据

时间:2019-10-21 14:41:08

标签: if-statement google-apps-script google-sheets google-sheets-formula add-on

我有一个带有一些数据的google工作表。我有一列具有不同单元格颜色的列。我想根据单元格的颜色在该列旁边上传数据。

这些是颜色说明:

Orange  Negatived added
Blue    To be negatived out
Green   Converted
Yellow  Not sure
Grey    Not to be touched
Red     Cancel Negative.

我不是这类事情的专家。我已经流浪了5个多小时,但没有找到任何有用的资源来做到这一点。

2 个答案:

答案 0 :(得分:3)

来自@player0的答案也是正确的,但是您可以通过使用Apps Script来实现,而无需第三方插件。

这是它的外观:

Final result on the sheet

这里是使用方法:

How the formula is used

代码如下:

function doActionBasedOnColor(cellA1) { //cellA1 is the A1 notation of the cell (it's position)
  var cell = SpreadsheetApp.getActiveSheet().getRange(cellA1);
  switch (cell.getBackground()) {
    case "#ff9900": //Orange
      return "Negatived added"
      break;

    case "#0000ff": //Blue
      return "To be negatived out"
      break;

    case "#00ff00": //Green
      return "Converted"
      break;

    case "#ffff00": //Yellow
      return "Not sure"
      break;

    case "#b7b7b7": //Grey
      return "Not to be touched"
      break;

    case "#ff0000": //Red
      return "Cancel Negative"
      break;

    default:
      return "Cell Background is: " + cell.getBackground();
      break;
  }
}

如果需要使用选择和拖动功能,可以通过将功能更改为:

function doActionBasedOnColor(row,col) {
  var cell = SpreadsheetApp.getActiveSheet().getRange(row, col);
  //...

以及公式: =doActionBasedOnColor(COLUMN(A1),ROW(A1))

我希望这会有所帮助!

答案 1 :(得分:1)

没有脚本或插件就不可能...

您将需要以下插件: https://chrome.google.com/webstore/detail/custom-count-and-sum/njiklelndjpdbdngfkdgeijcpfabfgkb

然后您可以使用COUNTBACKGROUNDCOLOR函数,以便最终公式如下:

=IF(COUNTBACKGROUNDCOLOR(A1, C$1)=1, "Negatived added", 
 IF(COUNTBACKGROUNDCOLOR(A1, C$2)=1, "To be negatived out", 
 IF(COUNTBACKGROUNDCOLOR(A1, C$3)=1, "Converted", 
 IF(COUNTBACKGROUNDCOLOR(A1, C$4)=1, "Not sure", 
 IF(COUNTBACKGROUNDCOLOR(A1, C$5)=1, "Not to be touched", 
 IF(COUNTBACKGROUNDCOLOR(A1, C$6)=1, "Cancel Negative", ))))))

其中C1:C6包含示例颜色