google-apps-script - 从谷歌表格中当前突出显示的单元格中获取行
问题描述
我想创建一个数据验证列表,它会根据当前行自动更新。换句话说,我想要 C 列中的下拉列表,其中包含已为 A 列中的当前值输入到 C 列中的所有值。
我将它放在我的数据验证列表范围的隐藏列的第 1 行:
=SORT(UNIQUE(FILTER(C3:C,A3:A=C1,NOT(ISBLANK(C3:C)))))
它工作得很好,除了我必须C1
用当前列值手动更新A
值。次优。我希望条件A3:A=C1
是A3: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 个变体都返回包含该函数的单元格的行号,但我想要用户当前所在的行号。有人可以告诉我如何获得这个值吗?非常感谢这里的任何帮助。
解决方案
以下代码适用于您的情况:
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 单元格中设置您想要的公式(您可以在最后一行中随意更改)。为了调用该函数,它会在您打开工作表时安装在下拉菜单中,选择要引用的单元格后,您只需单击它即可。
推荐阅读
- javascript - 如果我向后端发送 AJAX POST 请求(仅在本地计算机以外的其他计算机上),为什么会出现超时错误?
- javascript - date.value = new Date(date.value); 在 IE11 中不起作用
- sql - 根据 Amazon Redshift 中以下记录中的匹配值进行计数
- python - MATLAB的直方图均衡有什么问题?
- android-architecture-navigation - 如何关闭通过 Android Navigation 库启动的对话框片段
- php - 如何查看通过 PHP 上传到谷歌驱动器的文件?
- r - R 中的 Gmapsdistance 包错误“您必须使用 API 密钥来验证对 Google Maps Platform API 的每个请求。”
- python-3.x - 如何规范右偏数据
- jquery - 如何在动态创建的元素上触发按键事件
- c# - C# 以及在终结器中不能做什么