首页 > 解决方案 > 从谷歌表格中当前突出显示的单元格中获取行

问题描述

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

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

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

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

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

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

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

标签: google-apps-scriptgoogle-sheetsgoogle-sheets-custom-function

解决方案


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

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 单元格中设置您想要的公式(您可以在最后一行中随意更改)。为了调用该函数,它会在您打开工作表时安装在下拉菜单中,选择要引用的单元格后,您只需单击它即可。


推荐阅读