基于单元格值隐藏列
Hiding Columns based on a Cell Values
我正在尝试根据 A2 中的选择隐藏列。
这是我正在使用的代码,我很难坚持。
function onEdit(e) {
var myRange = SpreadsheetApp.getActiveSheet().getRange("A:J");
//Let's get the row & column indexes of the active cell
var row = e.range.getRow(1);
var col = e.range.getColumn(0);
//Check that your active cell is within your named range
if (col >= myRange.getColumn() && col <= myRange.getLastColumn() && row >= myRange.getRow() && row <= myRange.getLastRow()) {
if e.myRange === "Renewal" ? myRange.hideColumns(5)
}
}
如果有人能指出我正确的方向,将不胜感激。
根据您的代码,如果 A2 中的下拉菜单是“续订”,我假设您想要隐藏第 5 列 (E)。如果那是你想要的,那么你的脚本中有很多问题。
代码:
function onEdit(e) {
// get current sheet
var sheet = e.source.getActiveSheet();
// get row and column of edited cell
var row = e.range.getRow();
var col = e.range.getColumn();
// make sure to only hide/show column if edited cell is A2 in 'Sheet1'
if (col == 1 && row == 2 && sheet.getSheetName() == 'Sheet1') {
// if value of A2 in Sheet1 is Renewal, hide columns, if not Renewal, then show the same columns back
if (e.value === "Renewal") {
sheet.hideColumns(5, 2); // hide column 5-6 (E-F)
sheet.hideColumns(8, 1); // hide column 8 (H)
}
else {
sheet.showColumns(5, 2); // show column 5-6 (E-F)
sheet.showColumns(8, 1); // show column 8 (H)
}
}
}
错误:
getRow()
和getColumn()
分别获取范围的当前行和列。你没有在这里传递参数
- 您无需确定编辑的单元格是否在 A:J 范围内,您只需指定行和列应指向 A2(如果需要,还可以指定特定的 sheet被考虑在 )
- 三元运算符前面不需要
if
语句,它总是需要 else 部分。因此,我添加了 showColumns
以在 A2 未更新时显示隐藏列。
hideColumns()
是一个 sheet 方法,不是范围,因此你需要得到你当前编辑的 sheet。此外,它接受 2 个参数,开始隐藏列的索引以及需要隐藏的列数。
输出:
资源:
我正在尝试根据 A2 中的选择隐藏列。
这是我正在使用的代码,我很难坚持。
function onEdit(e) {
var myRange = SpreadsheetApp.getActiveSheet().getRange("A:J");
//Let's get the row & column indexes of the active cell
var row = e.range.getRow(1);
var col = e.range.getColumn(0);
//Check that your active cell is within your named range
if (col >= myRange.getColumn() && col <= myRange.getLastColumn() && row >= myRange.getRow() && row <= myRange.getLastRow()) {
if e.myRange === "Renewal" ? myRange.hideColumns(5)
}
}
如果有人能指出我正确的方向,将不胜感激。
根据您的代码,如果 A2 中的下拉菜单是“续订”,我假设您想要隐藏第 5 列 (E)。如果那是你想要的,那么你的脚本中有很多问题。
代码:
function onEdit(e) {
// get current sheet
var sheet = e.source.getActiveSheet();
// get row and column of edited cell
var row = e.range.getRow();
var col = e.range.getColumn();
// make sure to only hide/show column if edited cell is A2 in 'Sheet1'
if (col == 1 && row == 2 && sheet.getSheetName() == 'Sheet1') {
// if value of A2 in Sheet1 is Renewal, hide columns, if not Renewal, then show the same columns back
if (e.value === "Renewal") {
sheet.hideColumns(5, 2); // hide column 5-6 (E-F)
sheet.hideColumns(8, 1); // hide column 8 (H)
}
else {
sheet.showColumns(5, 2); // show column 5-6 (E-F)
sheet.showColumns(8, 1); // show column 8 (H)
}
}
}
错误:
getRow()
和getColumn()
分别获取范围的当前行和列。你没有在这里传递参数- 您无需确定编辑的单元格是否在 A:J 范围内,您只需指定行和列应指向 A2(如果需要,还可以指定特定的 sheet被考虑在 )
- 三元运算符前面不需要
if
语句,它总是需要 else 部分。因此,我添加了showColumns
以在 A2 未更新时显示隐藏列。 hideColumns()
是一个 sheet 方法,不是范围,因此你需要得到你当前编辑的 sheet。此外,它接受 2 个参数,开始隐藏列的索引以及需要隐藏的列数。