在行X和列Y的交点粘贴值

我需要logging每个学习科目的学生成绩。 我已经有一个自动校正器的考试,每当这个校正达到的结果,我需要它打开第二张表,并粘贴该学生的身份证号码(列A)和各自的主题(第1行)之间的交叉点的成绩。

我有大约5300名学生和17个不同的科目。

实际上,我已经可以做到这一点,但是我在Excel表格的超过10,000个单元格中使用Excel公式,根据我的标准“search”分级。 现在,你能想象这个东西是多么的有效吗!

我的简要问题是:有没有办法执行预定的任务,但更快?

你没有发布任何实际的问题。 我想你想在你的头衔中执行任务,比你现在做得更快。 我认为缓慢是由于您的摘要工作表中有太多的公式,每次更改都会重新计算。 如果是这样,你的解决scheme将是:

  1. 一旦find正确的单元格放置成绩,请将其粘贴为值,而不是保留公式。 下面的(分步)代码是这样做的。 计算成绩后,你必须打电话给他。
  2. 禁用自动计算,并且仅在一个工作会话结束时启用(例如)。 您可以通过菜单或通过VBA来完成。

Sub paste_grade(ByVal stud As Long, ByVal subj As Integer, ByVal gr As Double) Dim ws As Worksheet Set ws = ActiveWorkbook.Worksheets("Sheet1") Dim studrow As Long studrow = WorksheetFunction.Match(stud, ws.Range("A:A"), 0) Dim trg As Range Set trg = ws.Cells(studrow, subj + 1) trg.Value = gr End Sub

你将不得不稍微调整它,例如gr或者subj作为一个string。 在最后一种情况下,您将不得不在行1:1上再次使用WorksheetFunction.Match 。 从你的post,我想你知道如何做到这一点。

Interesting Posts