2012-04-01 63 views
1

假設我有一個Excel電子表格,其中包含學生的詳細信息以及學生參加的課程日期。比方說,行頭是:將Excel COUNTIFS與集合函數結合

名稱 - 學生成績 - 當然A的日期 - 當然B的日期 - 路C等的日期......

那麼顯然每個學生包含其檔次和日期的單獨的行的學生出席的課程。我想避免對錶格進行修改,因爲格式已經建立了一段時間。

我正在尋找某種方法來計算所有具有特定年級的學生,這些年級的學生在特定日期之間參加過課程。例如,計算所有在2012年1月1日至2012年3月31日期間參加課程的「C」級學生。

我猜測最終公式會是某種日期範圍列上的COUNTIFS和MAX的組合,但我不明白我可以如何逐行應用這一點。

所有的建議非常感謝!

最好的問候, 克里斯

+0

如果1名學生參加了1場在二月和3月2日證實,他應該算作1日和1月?二月份爲0,三月份爲1?或2月1日和3月2日? – Aprillion 2012-04-01 10:56:49

回答

2

假設你有B2:B100等級和日期在5列C2:G100那麼你可以使用這個公式與誰了課程的具體日期時期的特定等級來算的學生人數。

=SUMPRODUCT((MMULT((C$2:G$100>=J2)*(C$2:G$100<=K2)*(B$2:B$100=I2),{1;1;1;1;1})>0)+0)

其中J2K2是週期(1-Jan-20121-Mar-2012)和I2的開始和結束日期是一個特定等級(C

{1;1;1;1;1}部分取決於日期的列數,所以如果有7個日期列,那麼您需要將其更改爲{1;1;1;1;1;1;1} .....或者您可以使用此版本動態調整公式

=SUM((MMULT((C$2:G$100>=J2)*(C$2:G$100<=K2)*(B$2:B$100=I2),TRANSPOSE(COLUMN(C2:G100))^0)>0)+0)

後者式,雖然是「陣列式」,這需要用CTRL+SHIFT+ENTER

更新

確認對於不同等級的特定日期範圍內的數,然後假設你有一個有限的可能成績列表,然後在工作表上某處列出,例如M2:M10,然後你可以使用這個「數組公式」

=SUM(1-ISNA(MATCH(M$2:M$10,IF(MMULT((C$2:G$100>=J2)*(C$2:G$100<=K2),{1;1;1;1;1}),B$2:B$100),0)))

CTRL+SHIFT+ENTER

+0

這工作出色,謝謝。將第一個用作日期固定的列。對於獎勵積分,我將如何着手獲得該範圍內不同數量的行?再次感謝! – 2012-04-02 04:08:59

+0

對不起,只是爲了澄清 - 我正在尋找不同年級的學生參加特定日期之間的課程。 – 2012-04-02 06:42:08

+2

對於特定日期內的distince等級的數量,可以用CTRL + SHIFT + ENTER試試這個:'= COUNT(FREQUENCY(IF((C $ 2:G $ 100> = J2)*(C $ 2:G $ 100 <= K2) ,MATCH(B $ 2:B 100 $,B $ 2:乙100,0 $)),ROW(B $ 2:100 B $)-MIN(ROW(B $ 2:B $ 100)))^ 0)'。 – 2012-04-02 08:19:55