【问题标题】:How to set background colour of a cell in Sheet1, based on the same cell in Sheet2 using Google Spreadsheet?如何使用 Google 电子表格基于 Sheet2 中的相同单元格设置 Sheet1 中单元格的背景颜色?
【发布时间】:2021-08-18 04:53:51
【问题描述】:

我有一个包含以下工作表的 Google 工作簿: 表 1 表 2

我需要能够为 Sheet1 单元格 A1 着色以自动匹配 Sheet2 单元格 A1。

例如,如果 Sheet2 A1 具有绿色背景色,则 Sheet1 A1 也应自动反映为绿色背景色。如果 Sheet2 A1 颜色变为红色,Sheet1 A1 颜色也应变为红色。

【问题讨论】:

  • 你将如何改变Sheet2 A1的背景颜色?手动还是CF?如果您手动更改颜色,则需要脚本。
  • 目前是手动的。但是我们可以将其更改为 CF,这不是问题。 Sheet2 基本上是一张绘制我们员工整个月的可用性的工作表。我们将单元格着色为绿色以反映它们可用。但我们可以轻松地将其更改为“YES”(如果可用),并将 CF 设为绿色。
  • 那么您可以对 Sheet1、A1 单元格使用相同的 CF 规则。
  • 我如何根据 Sheet2 A1 的颜色有条件地格式化 Sheet1 A1?
  • CF 将基于 Active 列是或否。不基于颜色。您能否提供一些位于工作表中的示例数据。

标签: excel google-apps-script google-sheets excel-formula conditional-formatting


【解决方案1】:
function matchbgs() {
  const ss = SpreadsheetApp.getActive();
  const sh1 = ss.getSheetByName('Sheet1');
  const rg1 = sh1.getRange(1, 1, sh1.getMaxRows(), sh1.getMaxColumns());
  const bg1 = rg1.getBackgrounds();
  const sh2 = ss.getSheetByName('Sheet2');
  const rg2 = sh2.getRange(1, 1, sh2.getMaxRows(), sh2.getMaxColumns());
  const bg2 = rg1.getBackgrounds();
  if (bg1.length <= bg1.length && bg1[0].length <= bg2[0].length) {
    sh2.getRange(rg1.getA1Notation()).setBackgrounds(bg1);
  } else {
    sh2.insertRowsAfter(bg2.length,bg1.length - bg2.length);
    sh2.insertColumnsAfter(bg2[0].length,bg1.length - bg2[0].length);
    sh2.getRange(rg1.getA1Notation()).setBackgrounds(bg1);
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-21
    • 2012-08-24
    • 2015-06-02
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    相关资源
    最近更新 更多