自定义函数有问题
Having problems with custom function
我正在将一些电子表格从 Excel 转换为 Google 表格,我正在尝试执行一个函数来获取代码并应用该函数。例如,我在一列中有一个代码列表,接下来的 5 列带有文本。我想输入 =myFunction("code")
并且我想 return 使用此公式 =vlookup(code;A1:F30;3;0)
的值,这将 return 第 3 列代码所在的行。
我试过这些:
function myFunc(code) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cell = sheet.getRange(getCell);
var test = cell.setFormula('=VLOOKUP('+code+';a1:b10;2;0)')
return test;
}
它说我没有调用setFunction的权限,
function gettext(code) {
var func = '=VLOOKUP("'+ code +'";\'VA-Texte\'!A1:I383;\'VA-Texte\'!E1;0)';
return func;
}
它打印出我需要的确切代码,但不像公式那样。
无法评估您的代码,因为我们不知道 getCell
的值。
下面的代码中 "lookup" 是一个命名范围。范围是单元格 E4,其中包含值 "ghi",这是搜索词。
function test01(){
var abc = "lookup";
so5693959103(abc);
}
function so5693959103(abc) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = "56939591";
var sheet = ss.getSheetByName(sheetname);
// Lookup value is the named range = lookup which is found in E4
var vlookupformula03 = "=VLOOKUP("+abc+",A1:B10,2,0)";
//insert formula into cell E8
var targetRange03 = sheet.getRange("E10");
targetRange03.setFormula(vlookupformula03);
Logger.log("DEBUG: result03 = "+targetRange03.getValue());
}
Vlookup截图
编辑
此修订适用于 =mylookup("xxx")
的函数值,其中 'xxx' 是查找值。
在下面的示例中,查找值为 'ghi'
/*
Imitates the Vlookup function. Receives:
search - The desired value to look for in the column.
Once the cell of the [search] has been found, the returned parameter would be the value of the cell which is 1 cell to the right of the found cell.
*/
function mylookup(search) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = "56939591";
var sheet = ss.getSheetByName(sheetname);
var thevalue = search;
var lastRow=sheet.getLastRow();
var data=sheet.getRange(1,1,lastRow,2).getValues();
for(i=0;i<data.length;++i){
if (data[i][0]==thevalue){
return data[i][1];
}
}
}
Mylookup 函数
我正在将一些电子表格从 Excel 转换为 Google 表格,我正在尝试执行一个函数来获取代码并应用该函数。例如,我在一列中有一个代码列表,接下来的 5 列带有文本。我想输入 =myFunction("code")
并且我想 return 使用此公式 =vlookup(code;A1:F30;3;0)
的值,这将 return 第 3 列代码所在的行。
我试过这些:
function myFunc(code) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cell = sheet.getRange(getCell);
var test = cell.setFormula('=VLOOKUP('+code+';a1:b10;2;0)')
return test;
}
它说我没有调用setFunction的权限,
function gettext(code) {
var func = '=VLOOKUP("'+ code +'";\'VA-Texte\'!A1:I383;\'VA-Texte\'!E1;0)';
return func;
}
它打印出我需要的确切代码,但不像公式那样。
无法评估您的代码,因为我们不知道 getCell
的值。
下面的代码中 "lookup" 是一个命名范围。范围是单元格 E4,其中包含值 "ghi",这是搜索词。
function test01(){
var abc = "lookup";
so5693959103(abc);
}
function so5693959103(abc) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = "56939591";
var sheet = ss.getSheetByName(sheetname);
// Lookup value is the named range = lookup which is found in E4
var vlookupformula03 = "=VLOOKUP("+abc+",A1:B10,2,0)";
//insert formula into cell E8
var targetRange03 = sheet.getRange("E10");
targetRange03.setFormula(vlookupformula03);
Logger.log("DEBUG: result03 = "+targetRange03.getValue());
}
Vlookup截图
编辑
此修订适用于 =mylookup("xxx")
的函数值,其中 'xxx' 是查找值。
在下面的示例中,查找值为 'ghi'
/*
Imitates the Vlookup function. Receives:
search - The desired value to look for in the column.
Once the cell of the [search] has been found, the returned parameter would be the value of the cell which is 1 cell to the right of the found cell.
*/
function mylookup(search) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetname = "56939591";
var sheet = ss.getSheetByName(sheetname);
var thevalue = search;
var lastRow=sheet.getLastRow();
var data=sheet.getRange(1,1,lastRow,2).getValues();
for(i=0;i<data.length;++i){
if (data[i][0]==thevalue){
return data[i][1];
}
}
}
Mylookup 函数