如何为谷歌表格Search函数添加周+练习双查询条件?
修改后的Search函数代码
首先,我们需要在Form表中新增一个用于输入练习名称的单元格(示例中用J2,你可以根据实际需求调整位置),然后修改函数逻辑,同时匹配周数和练习两个查询条件:
var Search_Col_IDX = 0; // 周数所在的Data表列索引(对应Data表第1列) var Exercise_Col_IDX = 1; // 练习名称所在的Data表列索引(对应Data表第2列) function Search() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var formS = ss.getSheetByName("Form"); // 表单Sheet // 获取两个查询条件的值 var weekStr = formS.getRange("h2").getValue(); // 原周数条件 var exerciseStr = formS.getRange("j2").getValue(); // 新增的练习名称条件 var values = ss.getSheetByName("Data").getDataRange().getValues(); // 遍历Data表所有行,匹配双条件 for (var i = 0; i < values.length; i++) { var row = values[i]; // 同时满足周数匹配和练习名称匹配 if (row[Search_Col_IDX] == weekStr && row[Exercise_Col_IDX] == exerciseStr) { // 将匹配行的数据写入Form表对应单元格 formS.getRange("h7").setValue(row[2]); formS.getRange("h9").setValue(row[3]); formS.getRange("h11").setValue(row[4]); formS.getRange("h5").setValue(row[0]); formS.getRange("j5").setValue(row[1]); formS.getRange("j7").setValue(row[5]); formS.getRange("j9").setValue(row[6]); formS.getRange("j11").setValue(row[7]); // 找到第一个匹配项后退出循环(若需匹配所有同条件行可删除此行) break; } } }
修改说明
- 新增
Exercise_Col_IDX变量,用于定义练习名称在Data表中的列索引(示例设为1,对应Data表第2列,可根据实际数据位置调整) - 添加获取练习名称条件的代码:
var exerciseStr = formS.getRange("j2").getValue();,其中j2是练习名称的输入单元格,可自行修改位置 - 修改
if判断逻辑,同时校验周数和练习名称两个条件是否匹配 - 新增
break语句,找到第一个匹配行后停止遍历(如果Data表存在同周同练习的多行数据,需要全部匹配的话可以删除这行)
内容的提问来源于stack exchange,提问作者DDYC
相关产品推荐
相关产品推荐

