我尝试了很多事情。到目前为止,这对我来说是最好的方法。它有效,但仍然困扰着我。
我有一个自定义函数,可以根据给定的名称搜索价格。 虚拟参数在自定义函数中不执行任何操作。
一旦数据库中称为“价格”的价格值发生更改,电子表格就会更新自定义功能。假人的cuz。
这是我在单元格中运行自定义函数的方式
=searchPrice(B9,Prices!D:D)
问题是这样,它检查“价格”中的整个列,并更新/加载所有单元格/自定义函数。还有其他方法可以更新自定义函数,以便它更改每个单元格的值吗?
换句话说,我不想看整个专栏。我想查看一个特定的列,如果它更改了,请更新。
//Search Price sheet with the given name. Return price. dummy param updates google ss once the "Prices" sheet values changed.
function searchPrice(name,dummy)
{
var SPREADSHEET_NAME = "Prices";
var SEARCH_COL_IDX = 2;//Column with Names
var RETURN_COL_IDX = 3;//Column with prices
var values = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();
for (var i = 0; i < values.length; i++)
{
var col = values[i];
if (col[SEARCH_COL_IDX] == name)
{
return col[RETURN_COL_IDX];
}
}
}
答案 0 :(得分:0)
您的自定义函数实际上是在复制内置函数VLOOKUP
:
=VLOOKUP(B9,Prices!C:D,2,0)
如果在B9:B15中有一个名称列表,请使用ARRAY版本:
=ARRAYFORMULA(VLOOKUP(B9:B15,Prices!C:D,2,0))