谷歌表宏-我如何返回基于动态单元格内容的列数?



我有以下代码作为起点。我想选择整个列,其中第3行包含一个特定的日期值(它将是上星期一的日期;我在单元格E1中有一个返回此日期的公式。

function selectDate() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
ss.getRange(3,?,1,ss.getMaxColumns()).activate();
}

基本上,gerange列值将被解释为:"查找第3行中的值等于单元格e1中的值的列号"。

任何想法都会非常有帮助,即使它使用完全不同的方法来实现相同的事情。非常感谢!

在您的情况下,下面的示例脚本如何?

示例脚本:

function selectDate() {
var sheet = SpreadsheetApp.getActiveSheet();
var searchValue = sheet.getRange("E1").getDisplayValue();
var res = sheet.getRange(3, 1, 1, sheet.getLastColumn()).createTextFinder(searchValue).matchEntireCell(true).findNext();
if (!res) return;
var column = res.getColumn();
sheet.getRange(1, column, sheet.getLastRow()).activate(); // Here, the found column is activated.
Browser.msgBox("Found column number is " + column); // Here, the found column number is shown in a dialog.
}
  • 从你的情况来看,我认为你脚本中的getRange(3,?,1,ss.getMaxColumns())可能是getRange(3, 1, 1, sheet.getLastColumn())

  • 运行此脚本时,使用单元格"E1"的值搜索第3行。作为示例,当找到该值时,将激活找到的列,并在对话框中显示列号。这是一个样本。请根据您的实际情况修改。

注意:

  • 如果未选择列,则认为单元格"E1"在第3行中未找到。那时候你能提供你的电子表格的细节吗?通过这个,我想修改它。
  • 参考:

  • createTextFinder(findText) of Class Range

最新更新