首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌脚本vs公式- MATCHing记录

谷歌脚本vs公式- MATCHing记录
EN

Stack Overflow用户
提问于 2013-07-09 17:38:26
回答 3查看 748关注 0票数 0

目前,我有一个工作表,上面有以前的学生姓名和ID#。目前大约有3000条记录。

在第二个工作表中,我列出了新名称(通过表单输入)。

目前,我正在使用以下内容检查是否有以前的记录:

代码语言:javascript
复制
=IFERROR(INDEX(Students!A:A,MATCH(K2, Students!B:B; 0)), "NEW STUDENT") 

但是电子表格正在变得相当慢。

google脚本会更好吗?如果是这样,又是如何做到的呢?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-10 20:15:59

您可以尝试不同的公式。例如,在Sheet1中,我在this example spreadsheet中添加了10,000行假数据。我在Sheet2!A1中连接了单元格中的first name列和second name列,如下所示:

代码语言:javascript
复制
=arrayformula(join(";", Sheet1!B:B & " " & Sheet1!C:C))

然后,我可以在这个长字符串中执行一个新名称的文本搜索。例如:

代码语言:javascript
复制
=find("Peter Piper"&";", Sheet2!A1)

它很快。

票数 1
EN

Stack Overflow用户

发布于 2013-07-10 11:57:32

“更好”?这太主观了。让我们只讨论性能。

您应该能够编写一个脚本来执行这些特定的查找,速度比您当前的电子表格快得多。主导因素是执行的计算次数;

每次工作表中发生更改时,都会重新计算

  • 电子表格公式。因此,您对第二个工作表中已有学生的“新学生”检查是在浪费时间。
  • 表单提交触发器函数理想情况下将执行查找以响应表单,并且仅针对新的学生数据。
  • 脚本可以使用ScriptDB存储所有以前的学生姓名和in,从而消除反复阅读以前的学生电子表格的需要,并提供快速查找。

..。var db = ScriptDb.getMyDb();var result = db.query({id: newId});if (!result.hasNext()) { event.range.offset(0,statusColumn).setValue(“新学生”);}

反面观点确实存在,这里只有几个。

  • 你需要写javascript代码,而不是电子表格函数。这是一组不同的技能。
  • 如果您使用ScriptDb提高性能,则需要包括一些维护功能;至少,您需要在第一时间加载数据库。
票数 1
EN

Stack Overflow用户

发布于 2022-01-26 23:25:05

如果搜索文本为k2,这可能会起作用=dget(学生!A:B,学生!$A$1,{学生!$B$1;$K$2})。

如果你得到了#na!,你就得到了新的学生。if #num!那么你就有多个匹配了。dget是一个数据库函数。因此,它可以很好地处理大数据。然而,它不是那么灵活,而是高效的功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17544926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档