【发布时间】:2020-12-24 13:24:30
【问题描述】:
我有代表分类级别的表格形式的数据。每张纸上的列是给定(门、类、顺序等)的成员,其名称是列标题。
标题是订单,列内容是该订单中的家庭。 我有这个搜索功能,可以搜索给定家庭的订单表,并返回该家庭所属的订单。但是速度很慢。
我可以改进这个搜索算法,或者我的搜索方法来更快地在另一个工作表的多个单元格中运行这个函数吗?此工作簿包含参考表和一个示例 Foray 表,其中显示了我希望显着提高性能的功能。
https://docs.google.com/spreadsheets/d/1HvDpgWd6vhAF9UPiomwpmRLnzlduPU9c2ueWRwq3oZw/edit?usp=sharing
function findvalue(sheetName, searchVal) {
if(searchVal.length === 0){
throw 'Error. Incertae sedis.';
};
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var rangeData = sheet.getDataRange();
var lastColumn = rangeData.getLastColumn();
var lastRow = rangeData.getLastRow();
var searchRange = sheet.getRange(1,1, lastRow-1, lastColumn-1);
// Get array of values in the search Range
var rangeValues = searchRange.getValues();
// Loop through array and if condition met
for ( i = 0; i < lastColumn - 1; i++){
for ( j = 0 ; j < lastRow - 1; j++){
if(rangeValues[j][i] === searchVal){
return rangeValues[0][i]
};
};
};
};
【问题讨论】:
-
我怀疑你所做的是最快的。但您可能有兴趣尝试 textfinder。
标签: performance google-apps-script google-sheets query-optimization