目前我有一张带有在先学生姓名和ID#的工作表。目前有大约3000条记录。
在第二张工作表中,我列出了新名称(通过表格输入)。
目前我正在使用以下内容检查是否有先前的记录:
=IFERROR(INDEX(Students!A:A,MATCH(K2, Students!B:B; 0)), "NEW STUDENT")
但电子表格变得非常慢。
谷歌脚本会更好吗?如果是这样的话?
由于
答案 0 :(得分:1)
“更好的”?这太主观了。我们只谈谈表演。
您应该能够编写一个脚本,以比当前的电子表格更快地执行这些特定的查找。主导因素是正在执行的计算次数;
每次工作表发生更改时,都会重新计算电子表格公式。因此,您的“新生”会检查您在第二张工作表中已有的学生是否在浪费时间。
表单提交触发器功能理想情况下会执行查找以响应表单,并且仅针对新学生数据。
脚本可以使用ScriptDB
来存储所有Prior学生姓名& id,从而无需反复阅读Prior学生电子表格,并提供快速查找。
...
var db = ScriptDb.getMyDb();
var result = db.query({id: newId});
if (!result.hasNext()) {
event.range.offset(0,statusColumn).setValue("NEW STUDENT");
}
确实存在反对点,这里只是一对。
答案 1 :(得分:1)
您可以尝试不同的公式。例如,在this example spreadsheet中,我在Sheet1中添加了10,000行虚假数据。我已经在Sheet2!A1的单元格中加入第一个名称列和第二个名称列,如下所示:
=arrayformula(join(";", Sheet1!B:B & " " & Sheet1!C:C))
然后我可以在这个长字符串中执行新名称的文本搜索。例如以下内容:
=find("Peter Piper"&";", Sheet2!A1)
速度很快。