【问题标题】:Automatically add border to row if cell isn't empty如果单元格不为空,则自动为行添加边框
【发布时间】:2020-01-11 01:47:24
【问题描述】:

我想知道如何在谷歌表格中制作边框条件格式

如果我的工作表是这样的:

我希望它在编辑某些内容时变成这样

PS:我的工作表正在从另一个工作表中导入数据,希望这不会对应用功能造成问题

【问题讨论】:

  • 在条件格式中,您必须指定条件条件,那么条件是什么?
  • 只是一个想法,可能是你的标准是如果 d 不为空白,从 a 到 d 的边界将被设置
  • 因此您使用公式 = A1:D"" 和格式上边框为范围 A1:d 设置条件格式

标签: google-sheets conditional-formatting


【解决方案1】:

使用 Google Apps 脚本,您可以创建一个函数:

  1. 删除工作表中的所有边框。

  2. 查找所有应应用边框的空行。

  3. 为这些行设置边框。

以下代码执行上述操作:

function setSheetBorders() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName('Sheet1');

  // Remove all borders
  var dataRange = sheet.getDataRange();
  dataRange.setBorder(false, false, false, false, false, false);

  var firstColumn = sheet.getRange("A:A").getValues();
  var ranges = [];

  for (var i=1; i<firstColumn.length; i++) {
    if (firstColumn[i][0]) {
      ranges.push("A" + i + ":" + i);
    }
  }

  sheet.getRangeList(ranges).setBorder(false, false, true, false, false, false, "black",
                                       SpreadsheetApp.BorderStyle.SOLID_MEDIUM);
}

触发脚本的执行

关于执行此脚本,理想的情况是在编辑工作表时自动执行它。这可以使用onEdit() 触发器来完成。设置它就像在绑定到工作表的脚本中创建以下函数一样简单:

function onEdit(e) {
  setSheetBorders();
}

但是,这将在用户编辑工作表时执行,而不是在脚本编辑工作表时执行。

由于对表格文档的修改是为了可视化目的,我建议您改用onOpen() 触发器。这将导致每当用户访问文档时执行上述脚本。

function onOpen(e) {
  setSheetBorders();
}

此外,您还可以考虑创建custom menu。这将允许您在想要使用 UI 时手动触发脚本。

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
      .addItem('Set Sheet Borders', 'setSheetBorders')
      .addToUi();

  setSheetBorders();
}

【讨论】:

  • 非常感谢您的回复我去试试
【解决方案2】:

据我所知,没有办法“检测”更改并使用条件格式来反映这一点。最接近的方法是创建一个 IF 语句,并在条件格式菜单的自定义公式部分执行如下所示的操作。

=B1=67890779

或者这个用于检查多个单元格

=B1=67890779=B2=86687585

据我所知,这是最接近“检测”变化的方法

编辑:我被提醒在条件格式中没有更改边框的选项。
我唯一的想法是使行小到看起来像边框,并使用条件格式来更改单元格的背景。

希望对你有帮助

【讨论】:

  • 当然有了这个,OP 很难做到,因为他现在必须知道单元格的内容是什么。通常我们给出条件格式的公式一样简单,但必须匹配所有选择的范围。例如 = A1:Z10 = true,或 = isnumber(A1:C5) 或 = isblank (d1:d5) 等等更复杂
  • 而且条件格式也没有边框
  • @biahuosisnice 我在编辑我的帖子时解决了这个问题。感谢您提请我注意。
猜你喜欢
  • 2012-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-18
相关资源
最近更新 更多