我在A列中有一个简单公式,根据单元格I3的值,该列针对行返回True或False。此刻,每次更改单元格I3的值时,都必须手动转到过滤器,然后选择“确定”以刷新它。可以将其运行为由对单元格I3的任何编辑触发的脚本吗?
答案 0 :(得分:1)
是的,如果单元格I3被编辑,则可以使过滤器自动化。我不是过滤器方面的专家(特别是脚本编写者),因此我创建并重新使用了宏。
function onEdit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheetname = "P&L";
var sheet = ss.getSheetByName(sheetname);
var erow = e.range.getRow();
// Logger.log("DEBUG: row = "+erow);
var ecolumn = e.range.getColumn();
// Logger.log("DEBUG: column = "+ecolumn);
if (erow == 3 || ecolumn == 8 ){
// there is a match so the cell is I3
// Logger.log("DEBUG: the cell is I3");
updatefilter();
}
else
{
// there is no match so the cell is NOT I3
//Logger.log("DEBUG: the cell is not I3");
}
}
function updatefilter() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('V3').activate();
var criteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues(['', 'No'])
.build();
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(22, criteria);
};
答案 1 :(得分:0)
您可以从脚本中执行以下操作
function setFilter() {
var ss = SpreadsheetApp.getActive();
var tab = ss.getSheetByName("tabName")
var filter = {};
filter.range = {
sheetId: tab.getSheetId()
};
filter.criteria = {};
// Which column to add the filter to
var columnIndex = 2;
filter['criteria'][columnIndex] = {
'hiddenValues': ["No"]
};
var request = {
"setBasicFilter": {
"filter": filter
}
};
Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());
}
代码未经测试 添加一个按钮以调用该函数。