我有一个用例,我需要在代码内或电子表格单元格内运行索引函数。
用例如下:
在excel VBA中,可以使用以下方法完成此操作: Application.WorksheetFunction.Index(...,...,...)
在Google表格的Google脚本中是否存在任何此类功能? 我已经尝试过自己编写代码,尽管我可以在代码中使用它,但是我无法使其在工作表中正确返回。
function udfINDEX(str_ROW, str_COL) {
var app = SpreadsheetApp.getActive();
// FORM Responses are on this tab
var form = app.getSheetByName("Form Responses");
// Calculations are occuring on this tab
var xlte = app.getSheetByName("Translated Responses");
// Points value for each Question and Override logic listed on this tab
var vals = app.getSheetByName("Values");
var i_row = udfMATCH(str_ROW.getValue(), 'r');
var i_col = udfMATCH(str_COL.getValue(), 'c');
var ans = form.getRange(i_row, i_col, 1, 1)
return String(ans).trim();
}
function udfMATCH(strFIND, strTYPE) {
var app = SpreadsheetApp.getActive();
var form = app.getSheetByName("Form Responses");
if ( strTYPE === "r" ) {
return udfROW(strFIND, form.getLastRow());
} else {
return udfCOL(strFIND, form.getLastColumn());
}
}
// Always a TimeStamp
function udfROW(strFIND, iMaxRow) {
var app = SpreadsheetApp.getActive();
var form = app.getSheetByName("Form Responses");
for (var i = 1; i <= iMaxRow; i++) {
var findDTE = String(strFIND).trim()
var compareDTE = String(form.getRange(i, 1, 1, 1).getValue()).trim();
if ( compareDTE == findDTE ) {
return i;
break;
} else if ( compareDTE.length == 0 ) {
return NaN;
break;
}
}
}
// Each Column has Unique Value or Header
function udfCOL(strFIND, iMaxCol) {
var app = SpreadsheetApp.getActive();
var form = app.getSheetByName("Form Responses");
var i = 1
for (var j = 1; j <= iMaxCol; j++) {
var findCOL = String(strFIND).trim();
var compareCOL = String(form.getRange(1, j, 1, 1).getValue()).trim();
if ( compareCOL == findCOL ) {
return j;
break;
} else if ( compareCOL.length == 0 ) {
break;
}
}
}
答案 0 :(得分:0)
您可以尝试类似的方法。在我的简单示例中,它起作用。也许它将对您有用。除数组公式外,我对单元格公式不那么熟悉。
function mySum(a,b){
var a=a || 'A1';
var b=b || 'B1';
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var v1=sh.getRange(a).getValue();
var v2=sh.getRange(b).getValue();
var cell=sh.getActiveCell();
cell.setFormula('=SUM(' + a + "," + b + ')');
var v3=cell.getValue();
return cell.getValue();
}