如图所示,同事根据日期统计了每天学生上课情况,同一节课有不同人数的学生,登记的时候学生名字顺序也不一样,所以导致E-K列都有可能出现同一个学生的名字,现在我想根据学生的名字,统计他的上课日期,该用什么函数呢?请教各位大神,非常感谢!
你可以用VBA不
看的不清楚,代码给你,复制粘贴就行。
GIF是生成的过程,图片是结果。把宏启动,就能用了
Range("p2:y9999").ClearContents
q2 = Application.WorksheetFunction.CountA(Range("p" & w1 & ":y" & w1)) + 16
以上两串代码包含Y列,如果数据超过Y列,就把这两个代码里面的Y加大,改成多少就看你自己了。
Sub 取数()
Dim q1%, q2%, q3%, q4%
Dim w1%, w2%, w3%, w4%
Range("p2:y9999").ClearContents
q1 = Application.WorksheetFunction.CountA(Range("o2:o9999")) + 1
For w1 = 2 To q1
q3 = Application.WorksheetFunction.CountA(Range("a2:a9999")) + 1
For w2 = 2 To q3
For w3 = 5 To 11
q2 = Application.WorksheetFunction.CountA(Range("p" & w1 & ":y" & w1)) + 16
If Cells(w1, 15) = "" Then
ElseIf Cells(w2, w3) = Cells(w1, 15) Then
Cells(w1, q2) = Cells(w2, 2)
End If
Next
Next
Next
End Sub
Sub 清除()
Range("p2:y9999").ClearContents
End Sub
嗯嗯,是我没有说的很清楚,实际上就是需要统计学生当月总共上了几次课,然后显示具体的上课日期,一个学生一天内上了几次课,就显示几个日期
追答在P2单元格输入公式:
=SUMPRODUCT(($D$2:$D$222)*($E$2:$K$222=O2)*(MONTH($B$2:$B$222)=7))
复制并下拉,即是每个学生7月份上课的小时数。
在Q2单元格输入公式:
=SUMPRODUCT(($E$2:$K$222=O2)*(MONTH($B$2:$B$222)=7))
复制并下拉,即是每个学生7月份上课的次数。
至于哪几个日期在上课,左边已经有明细的数据,何必还要再做一个呢?
您好,这个公式右拉可以,下拉怎么不行呢?请教!!!!感恩