如果单元格不为空,则自动为行添加边框

Automatically add border to row if cell isn't empty

我想知道如何在 google sheets

中制作边框条件格式

如果我的sheet是这样的:

我希望每次编辑的时候都变成这样

PS:我的 sheet 正在从另一个 sheet 导入数据我希望这不会对应用

的函数造成问题

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

=B1=67890779

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

=B1=67890779=B2=86687585

据我所知,这是最接近 "detect" 变化的方式

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

希望对您有所帮助

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

  1. 删除 sheet.

  2. 中的任何边框
  3. 查找应应用边框的所有空行。

  4. 为这些行设置边框。

以下代码执行上述操作:

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);
}

触发脚本执行

关于执行这个脚本,最理想的情况是在编辑sheet时自动执行。这可以使用 onEdit() 触发器来完成。设置它就像在绑定到 sheet:

的脚本中创建以下函数一样简单
function onEdit(e) {
  setSheetBorders();
}

但是,这将在用户编辑sheet时执行,而不是在脚本编辑它时执行。

由于表格文档的修改是为了可视化,建议您改用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();
}