我有来自一个队列的学生注册数据,涵盖十二个学期。我每个学期都会创建计数器,以显示有多少学生,学期结束,转换专业,或者没有任何前一学期的返回记录。我很难想出有多少学生上学这个学期。到目前为止,我已经尝试了以下公式:
COUNTIFS(B2:B10,"=BIO",C2:C10,"=NONE",D2:F10,"=BIO")
用简单的英语,我将其翻译为: 论点1:如果是上一学期,他们就被注册为BIO专业 参数2:如果这个学期他们没有注册并显示为NONE 论证三:和前一学期他们被注册为BIO主要人数。
以下是我的实际数据的示例模型:
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
对于COUNTIFS
,您不需要添加等号,只需写:
=COUNTIFS(B2:B10,"BIO",C2:C10,"NONE",D2:F10,"BIO")
当您的条件相互依赖时,此公式适用,例如,学生将仅在第一学期注册为BIO专业时计数 AND 在第二学期他们未注册 AND 在第3学期,他们注册成为BIO专业。在提供的示例中,有0个这样的情况。 `
答案 1 :(得分:0)
如果我理解了你的问题。
你可以通过这种方式完成它。
使用主要名称创建新列,并根据公式
创建计数 =COUNTIF(G21:J21,"BIO")
此公式适用于BIO
可能你可以改变公式专业
答案 2 :(得分:0)
您可以尝试将以下UDF放在标准模块中。这可以整理一下。
功能NotEnrolledCount
参数:
必需student
,范围。学生姓名的单元格例如是A2
要求semester
,长,学期计算到例如5
可选sameMajor
布尔值,默认值为True,例如False
N5
=NotEnrolledCount(A5,7,TRUE)
返回1
可选sameMajor
允许您指定是否要计算
TRUE
其中Maj1, NONE, Maj1
或 FALSE
其中Maj1, NONE, Maj2
注意:出于某种原因,我必须按F9强制UDF有时更新。
这是带有test子的代码,用于调用函数来测试参数。
Option Explicit
Sub TEST()
Dim myCount As Long
myCount = NotEnrolledCount(Range("A9"), 5, False)
End Sub
Public Function NotEnrolledCount(ByVal student As Range, ByVal semester As Long, Optional sameMajor As Boolean = True) As Long
If semester = 1 Then
NotEnrolledCount = -1
MsgBox "At least two semesters must have passed"
Exit Function
End If
Dim semestersRange()
semestersRange = student.Offset(, 1).Resize(1, semester).Value
Dim semesterNumber As Long
For semesterNumber = 2 To UBound(semestersRange, 2) - 1
Dim lastSemester As String
lastSemester = UCase(semestersRange(1, semesterNumber - 1))
Dim nextSemester As String
nextSemester = UCase(semestersRange(1, semesterNumber + 1))
Dim currentSemester As String
currentSemester = UCase(semestersRange(1, semesterNumber))
Dim semesterOffCount As Long
If currentSemester = "NONE" And lastSemester <> "NONE" And _
nextSemester <> "NONE" And nextSemester <> vbNullString Then
If sameMajor Then
If nextSemester = lastSemester Then
semesterOffCount = semesterOffCount + 1
End If
Else
If nextSemester <> lastSemester Then
semesterOffCount = semesterOffCount + 1
End If
End If
End If
Next semesterNumber
NotEnrolledCount = semesterOffCount
End Function