【问题标题】:Adding new Rows changes Range cells in Google Sheets, skips new row添加新行更改 Google 表格中的范围单元格,跳过新行
【发布时间】:2015-03-17 15:59:09
【问题描述】:

最初的问题在这里,并且有一个我认为有效的答案:Google Sheets Conditional Formatting changes when new rows added

但是在使用它一个月左右后,当我添加新行时,我仍然遇到条件格式更改“范围:”中的值的问题。例如,如果我的格式是针对整个 B 列,然后我在第 35 行添加一行,则条件格式现在在范围内有 B1:B34,而第 35 行没有格式。

解决方案是将此代码放入 Google 表格的脚本编辑器中。

function formatRange(){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("Sheet1");
    var range = sheet.getRange("A1");
 range.copyFormatToRange(sheet,1,sheet.getLastColumn(),1,sheet.getLastRow())
}

同样,只要将新行添加到工作表,条件格式范围信息就会更改并跳过新行。

【问题讨论】:

  • 如果您格式化一整列,这对您有用吗?或者当前数据下方是否存在格式和/或数据格式不同的数据?
  • conditional-formatting 用于 Excel。对于 Google 表格,请使用 gs-conditional-formatting
  • 无法评论 Rubén 的回答,我想指出,如果您选择插入单元格而不是行,这将不起作用。插入行会将列高范围分成插入点上方和下方的两个不同范围。

标签: google-sheets gs-conditional-formatting


【解决方案1】:

如果格式化和整列是可行的,那可以在代码中完成:

function columnBackground() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var range = sheet.getRange("B:B");
  range.setBackground("red");
}

以上代码将整个B列的背景设置为红色。

【讨论】:

  • 所以我将条件格式放在所有列的第 2 行,因为不同的列有不同的规则。脚本编辑器中的实际代码是:function formatRange(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("FILES"); var range = sheet.getRange("A2:R2"); range.copyFormatToRange(sheet,1,sheet.getLastColumn(),1,sheet.getLastRow()) } 因为我认为这会将 A2、B2、C2 等中的任何规则抓取到 R2 中,然后保留它们的格式。但同样,每次添加新行时,它都会更改值。
【解决方案2】:

简答

为整列设置条件格式规则,而不是逐个单元格设置条件格式。

说明

在“应用到范围”设置中,范围应类似于 B1:B1001,因此无论何时在 B1 和 B1001 之间插入一行,条件格式规则都会包含新行。

注意:如果您使用B1:B,它将自动更改为将最后一个单元格设置为与电子表格中的最后一行对应的单元格。

【讨论】:

  • 好的,让我试一试。似乎违反直觉不是吗? :) 似乎 B1:B 将包括曾经添加的每一行,但让我试试你的解决方案。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多