将列添加到Excel从其他表增长列表

背景

我为我的妻子在Excel中创build一个成绩簿。 我有总分,class级,考试和参与表。

这三部分工作(作业,考试和参与)各有不同数量的项目,每个项目可能有不同数量的点数。 每个部分都有一个总分的重量。

我有这个和每个部分固定数量的项目运行,但我想创build一个模板,可以更新从课堂到class级和每年。

总体成绩工作表

工作表

作业工作表

这是问题:

在作业单上,我希望能够input新的作业和他们的分值,并自动更新我的第一个工作表选项卡上的主成绩表。 当新行被添加到另一个工作表(分配列表)时,是否有任何方法可以在一个工作表的一部分(主成绩表)中添加列?

有可能在不使用VBA的情况下实现这一点。 然而,你将会遇到困难的原因是,你已经违反了你已经build立的表的正常forms 。 看来您要查找的相关数据是每个作业的每个学生的分数。 如果这是正确的,你需要的粒度级别是在Assignment ,而不是在Student

有一些相当快速的方法来修改你现有的工作来解决这个问题。 我在下面写了一些示例数据。 看一下,看看是否有帮助。

示例原始表

 +---------+------+------------+------------+ | Student | Quiz | Thumbnails | Watercolor | +---------+------+------------+------------+ | Paul | 3 | 10 | 90 | | Frank | 4 | 10 | 95 | | Mary | 5 | 10 | 70 | | Ellen | | 10 | 85 | | Sue | 6 | 10 | 92 | | Anton | 5 | 10 | 87 | +---------+------+------------+------------+ 

数据的图像如下(注意我突出了空白值)。

non_normal_student_and_assignment

样本正常表

 +---------+-------------+-----------+-------+ | Student | Assignment | New_Score | Score | +---------+-------------+-----------+-------+ | Paul | Quiz | | 3 | | Frank | Quiz | | 4 | | Mary | Quiz | | 5 | | Ellen | Quiz | | 0 | | Sue | Quiz | | 6 | | Anton | Quiz | | 5 | | Paul | Thumbnails | | 10 | | Frank | Thumbnails | | 10 | | Mary | Thumbnails | | 10 | | Ellen | Thumbnails | | 10 | | Sue | Thumbnails | | 10 | | Anton | Thumbnails | | 10 | | Paul | Watercolor | | 90 | | Frank | Watercolor | | 95 | | Mary | Watercolor | | 70 | | Ellen | Watercolor | | 85 | | Sue | Watercolor | | 92 | | Anton | Watercolor | | 87 | | Mary | ExtraCredit | 10 | 10 | | Ellen | ExtraCredit | 8 | 8 | | Sue | ExtraCredit | 9 | 9 | | Anton | ExtraCredit | 10 | 10 | +---------+-------------+-----------+-------+ 

数据的图像如下。 分数列可以回到您的旧表格,并抓取您已经input给学生的分数,因此您不必手动完成这一切。 这个公式是=INDEX(non_normal,MATCH([@Student],non_normal[Student],0),MATCH([@Assignment],non_normal[#Headers],0))

这假设你已经把旧数据格式化成一个Excel数据表( ctrl + t ),并将其命名为non_normalalt + j + t + i )。 请注意,Ellen的未提交作业使用此方法以零分。 我添加了一个名为New_Score的列,这样您就可以将新的学生作业提交组合添加到表中,而无需修改旧的非non_normal表(这是OP中的麻烦)。 添加此列后, Score列中的公式可以更改为=IF(NOT(ISBLANK([@[New_Score]])),[@[New_Score]],INDEX(non_normal,MATCH([@Student],non_normal[Student],0),MATCH([@Assignment],non_normal[#Headers],0))) ,如果可用则取New_Score值,否则取原始分数。

橙色 输入 单元格是新的学生作业提交组合。 请注意,您不需要为每个学生添加一行,只要学生提交作业即可添加一行。

normal_student_and_assignment

样本分配表

 +-------------+-----------------+ | Assignment | Points_Possible | +-------------+-----------------+ | Quiz | 6 | | Thumbnails | 10 | | Wartercolor | 100 | | ExtraCredit | | +-------------+-----------------+ 

我已经添加了ExtraCredit任务,可能的最高分数为零/空白(因为没有完成额外的学分不应该指望学生)

任务

回报 – 回到原始表

 +--------------+---------------+------------+------------+-------------+-------------+--------+ | Sum of Score | Column Labels | | | | | | +--------------+---------------+------------+------------+-------------+-------------+--------+ | Row Labels | Quiz | Thumbnails | Watercolor | ExtraCredit | Grand Total | | +--------------+---------------+------------+------------+-------------+-------------+--------+ | Anton | 5 | 10 | 87 | 10 | 112 | 96.6% | | Ellen | 0 | 10 | 85 | 8 | 103 | 88.8% | | Frank | 4 | 10 | 95 | | 109 | 94.0% | | Mary | 5 | 10 | 70 | 10 | 95 | 81.9% | | Paul | 3 | 10 | 90 | | 103 | 88.8% | | Sue | 6 | 10 | 92 | 9 | 117 | 100.9% | +--------------+---------------+------------+------------+-------------+-------------+--------+ 

使用下面的图片,您将新标准化的数据转换为数据透视表。 ( alt + n + v )。 现在,只需在normal_assignment DataTable中添加一个新的赋值,将会在刷新数据透视表( alt + a + r + a )时使该赋值出现在新列中。

使用下面的公式计算透视表右侧的%得分(样本数据透视表以单元$M$2 ): =GETPIVOTDATA("Score",$M$2,"Student",M4)/SUM(assignment[Points_Possible])

pivot_student_scores

我已经把这个原始样本file upload到我的公开回购,如果你想拉它,偷看源头。 感谢文本到表格转换的有意义的解决scheme。

希望这是你所需要的!