查找并计算excel中两个数组之间的匹配

时间:2016-03-29 17:41:25

标签: excel excel-vba excel-formula excel-2010 vba

我试图制作一张跟踪学生进度的表格。入学后,学生将获得所有科目的预测成绩。在今年晚些时候,他们的老师给他们一个考试(有一个成绩),然后给出一组新的预测成绩。

这给了我两张表(每张都在不同的表格上)......

-------------------------------------
-Entry   -          Subject         -
-------------------------------------
-Student - Art  -  Maths  -  French -
-------------------------------------
- Jane   -   U  -   U     -  n      -
-------------------------------------
- Alice  -   E  -   A+     - n      -
-------------------------------------
- Tom    -   D  -   A     -  c      -
-------------------------------------

----------------------------------------------------------------------
-Later   -                         Subject                           -
----------------------------------------------------------------------
-Student - Art Exam -  Art New Grade - Maths Exam - Maths New Grade  -
----------------------------------------------------------------------
- Jane   -   U      -   U            -  E         -    E             -
----------------------------------------------------------------------
- Alice  -   D      -   D            -  A+         -   A+            -
----------------------------------------------------------------------
- Tom    -   C      -   B            -  A         -    A+            -
----------------------------------------------------------------------

我创建了一个仪表板,其中有两个下拉菜单,用户可以选择主题,然后进行比较(考试成绩,新成绩,最佳成绩......)。使用SUMPRODUCT我可以接受输入并轻松计算匹配列中的等级。

我想要做的是创建一个类似下面的表格,可以显示学生在两个跟踪期间的变化情况......

--------------------------------------------
- Subject -          New Grade             -
-   Art   - n - U - E - D - C - B - A - A+ -
--------------------------------------------
- E    n  -   -   -   -   -   -   -   -    -
-- -----------------------------------------
- n    U  -   - 1 -   -   -   -   -   -    -
-- -----------------------------------------
- t    E  -   -   -   - 1 -   -   -   -    -
-- -----------------------------------------
- r    D  -   -   -   -   -   - 1 -   -    -
-- -----------------------------------------
- y    C  -   -   -   -   -   -   -   -    -
--------------------------------------------
-      B  -   -   -   -   -   -   -   -    -
--------------------------------------------
-      A  -   -   -   -   -   -   -   -    -
--------------------------------------------
-     A+  -   -   -   -   -   -   -   -    -
--------------------------------------------

每个单元格计算它在两个数组之间找到匹配值的次数,其中subject =选择值(在本例中为Art)和比较=选择值(在这种情况下为新等级)。我不介意空值为零或空白。我需要有比赛的数量,这样我就可以看看有多少学生取得了进步(在字母表中提前写的字母比输入时的测试结果更早)。

理想情况下,我最终也会选择行和列,因此教师可以将考试结果与新的预测成绩进行比较。

在我的两个阵列中,学生以相同的顺序出现(担心的标准少一个)但是科目和比较者不会。 (注意 - 我一直在使用连接来合并主题和比较器)

到目前为止,我所看到的所有帮助都预计数据只有两行,但是我有20个科目,然后每个科目可以进行5次左右的比较!

感谢您的任何建议!

1 个答案:

答案 0 :(得分:0)

试试这个:

=IF(SUMPRODUCT(($B3=INDEX(Sheet1!$B$3:$D$5,0,MATCH($A$2,Sheet1!$B$2:$D$2,0)))*(C$2=INDEX(Sheet2!$B$3:$E$5,0,MATCH($A$2 & " New Grade",Sheet2!$B$2:$E$2,0))))=0,"",SUMPRODUCT(($B3=INDEX(Sheet1!$B$3:$D$5,0,MATCH($A$2,Sheet1!$B$2:$D$2,0)))*(C$2=INDEX(Sheet2!$B$3:$E$5,0,MATCH($A$2 & " New Grade",Sheet2!$B$2:$E$2,0)))))

enter image description here

如果您不介意0,那么上述if语句的真实部分将起作用:

=SUMPRODUCT(($B3=INDEX(Sheet1!$B$3:$D$5,0,MATCH($A$2,Sheet1!$B$2:$D$2,0)))*(C$2=INDEX(Sheet2!$B$3:$E$5,0,MATCH($A$2 & " New Grade",Sheet2!$B$2:$E$2,0))))

供参考:

条目表(Sheet1):

enter image description here

新成绩单(Sheet2)

![enter image description here

有一点需要注意,学生必须按照相同的顺序。