从 google 工作表中当前突出显示的单元格中获取行

Get row from currently highlighted cell in google sheets

我想创建一个根据当前行自动更新的数据验证列表。换句话说,我想要 C 列中的下拉列表,其中包含已输入到 C 列中的所有值作为 A 列中的当前值。

我将其放在数据验证列表范围的隐藏列的第 1 行: =SORT(UNIQUE(FILTER(C3:C,A3:A=C1,NOT(ISBLANK(C3:C)))))

除了我必须用当前列 A 值手动更新 C1 中的值外,它工作得很好。次优。我希望条件 A3:A=C1A3:A=C + CURRENTROW(),其中 CURRENTROW() 是将 return 当前行 return 的任何类型的函数或自定义函数。我找不到任何可以给我当前单元格或当前行的东西。我尝试了以下自定义函数:

function CURRENTROW() { 
  return  SpreadsheetApp.getActiveSheet().getActiveRange().getRow(); 
}

function CURRENTROW() { 
  return  SpreadsheetApp.getActiveSheet().getActiveCell().getRow();
}

function CURRENTROW() {
  return  SpreadsheetApp.getActiveSheet().getCurrentCell().getRow();
}

所有 3 种变体 return 包含函数的单元格的行号,但我想要用户当前所在的行号。有人可以告诉我如何获得这个价值吗?非常感谢这里的任何帮助。

根据您提供的少量信息,您可以执行类似的操作,但仅在对 c 列进行编辑后才有效,并将更新 D1 中的数字:

function onEdit(e) {
  if (SpreadsheetApp.getActiveSheet().getActiveRange().getColumn()==3){
    var rownum = SpreadsheetApp.getActiveSheet().getActiveRange().getRow()
    SpreadsheetApp.getActiveSheet().getRange('D1').setValue(rownum); 
  }
}

以下代码适用于您的情况:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
      .addItem('Custom function', 'custom')
      .addToUi();
}

function custom() {
  var currentRow = SpreadsheetApp.getActiveSheet().getActiveCell().getRow();
  var formula = "=SORT(UNIQUE(FILTER(C3:C,A3:A=C" + currentRow + ",NOT(ISBLANK(C3:C)))))";
  SpreadsheetApp.getActive().getRange("A1").setValue(formula);
}

它的作用是在A1单元格中设置你想要的公式(你可以在最后一行随意更改)。为了调用该函数,当您打开 sheet 时,它会安装在下拉菜单中,在选择要引用的单元格后,您只需单击它即可。