0

我正在寻找一个宏的帮助,该宏将显示一组列,然后另一个将显示分配给两个单独按钮的同一组列。

目前,我有完成此任务的Hide BootcampShow Bootcamp按钮,但我知道需要将列添加到此工作表中,这将在未来抛出范围(<> Column I OR Columns BJ:CO)。是否有人有一个解决方案可以在将列添加/删除到工作表时保持范围完整性?

工作表链接

https://docs.google.com/spreadsheets/d/17H9QMJ7Lmznon8G0dO4MGkidE0b6ymrvgt7fTE9gQBw/edit?usp=sharing

当前代码如下

隐藏列

function HideBootcamp() {
  var spreadsheet = SpreadsheetApp.getActive();

   spreadsheet.getRange('I:I').activate();
   spreadsheet.getActiveSheet().hideColumns(spreadsheet.getActiveRange().getColumn(), spreadsheet.getActiveRange().getNumColumns());

   spreadsheet.getRange('BJ:CO').activate();
   spreadsheet.getActiveSheet().hideColumns(spreadsheet.getActiveRange().getColumn(), spreadsheet.getActiveRange().getNumColumns());

   spreadsheet.getRange('A2').activate();
};

显示列

function ShowBootcamp() {
  var spreadsheet = SpreadsheetApp.getActive();

   spreadsheet.getRange('I:I').activate();
   spreadsheet.getActiveSheet().showColumns(spreadsheet.getActiveRange().getColumn(), spreadsheet.getActiveRange().getNumColumns());

   spreadsheet.getRange('BJ:CO').activate();
   spreadsheet.getActiveSheet().showColumns(spreadsheet.getActiveRange().getColumn(), spreadsheet.getActiveRange().getNumColumns());

   spreadsheet.getRange('A2').activate();
};
4

2 回答 2

0

按名称隐藏列

如果您在上面的评论中对我的两个问题的回答都是肯定的,那么这将为您隐藏您的专栏。您所要做的就是在顶行中为函数提供列的名称,当然您可能必须更改工作表名称。

function hideColumnByName(name) {
  var name=name||'HDR10';//debug
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Master');
  var rg=sh.getRange(1,1,1,sh.getLastColumn())
  var hA=rg.getValues()[0];
  sh.hideColumns(hA.indexOf(name)+1);
}
于 2019-04-26T03:51:50.780 回答
0

它缺少激活范围。

function hideColumnByName(name) {
  var name=name||'HDR10';//debug
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Master');
  var rg=sh.getRange(1,1,1,sh.getLastColumn()).activate();
  var hA=rg.getValues()[0];
  sh.hideColumns(hA.indexOf(name)+1);
}
于 2020-06-06T05:57:22.117 回答