2013-11-23 50 views
0

我有一个电子表格,其中包含一个矩阵,用于计算学生有多少次与特定辅导员上课。用于计数Matrix的Google Apps脚本

基质正常工作与此公式:

=ARRAYFORMULA(SUM(IF(TERM4!$B$6:$B$2398=B$1,IF(TERM4!$C$6:$C$2398=$A2,1,IF(TERM4!$D$6:$D$2398=$A2,1,FALSE()))),FALSE())) 

然而由于学生的数量/辅导基质是7000个细胞,下降相当减缓工作片。

有没有更好的方法来做到这一点。我可以运行谷歌应用程序脚本来计算触发器上的矩阵(例如每周一次)来计算矩阵,因此公式不会减慢表格的速度。

我也想公式返回一个空白而不是0,如果结果为假。

感谢您的帮助!

回答

0

是的,它可以用气体做到这一点。唯一有点复杂的部分是,如果你的脚本超过5分钟,它不会处理所有的行。为了避免这种情况,请按块(例如,每次100个)处理它,并使用scriptProperties来记住上次处理的电子表格和行。每个触发器都会尽可能地进行处理,直到处理完所有电子表格和行。

+0

谢谢齐格...我是相当新的JavaScript,主要与图书馆的脚本工作...什么样的措辞最好找到一个脚本,可能会做这样的事情,我怎么能得到该数组上班。 – pdrops

+0

我不知道你是否会找到一个脚本来做到这一点。首先尝试通过假设您可以一次处理整个阵列(不超时)。你会感觉到处理需要多长时间。如果处理需要很长时间,你将不得不“按块”来完成,但都需要写一点算法,但第一个算法更容易。 –