如果单元格不为空,则自动为行添加边框
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 脚本,您可以创建一个函数:
删除 sheet.
中的任何边框
查找应应用边框的所有空行。
为这些行设置边框。
以下代码执行上述操作:
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();
}
我想知道如何在 google sheets
中制作边框条件格式如果我的sheet是这样的:
我希望每次编辑的时候都变成这样
PS:我的 sheet 正在从另一个 sheet 导入数据我希望这不会对应用
的函数造成问题据我所知,没有办法 "detect" 更改并使用条件格式来反映这一点。最接近的是制作一个 IF 语句,然后在条件格式菜单的自定义公式部分执行如下所示的操作。
=B1=67890779
或者这个用于检查多个单元格
=B1=67890779=B2=86687585
据我所知,这是最接近 "detect" 变化的方式
编辑:我被提醒在条件格式中没有更改边框的选项。
我唯一的想法是使行足够小以看起来像边框,并使用条件格式来更改单元格的背景。
希望对您有所帮助
使用 Google Apps 脚本,您可以创建一个函数:
删除 sheet.
中的任何边框
查找应应用边框的所有空行。
为这些行设置边框。
以下代码执行上述操作:
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();
}