Forum Discussion

afaherty's avatar
afaherty
Icon for Helper V rankHelper V
3 years ago
Solved

Assign students a pass/fail status based on how many tests they've passed

Hi All, I was hoping one of you talented forum members could help me.   Here is an example of my data:     Essentially, what I need to do is designate each student as Pass or Fail overall...
  • tamerj1's avatar
    3 years ago

    HI afaherty 
    I hope something like this would satisfy your requirements.

    Pass/Fail = 
    VAR PassLimit = SELECTEDVALUE ( 'Pass Limit'[Pass Limit] )
    VAR CurrentStudentTable =
        CALCULATETABLE ( 'Table', ALLEXCEPT ( 'Table', 'Table'[Student], 'Table'[Test] ) )
    VAR Passes =
        FILTER ( CurrentStudentTable, 'Table'[Pass_Fail] = "Pass" )
    VAR Result =
        IF (
            DIVIDE ( COUNTROWS ( Passes ), COUNTROWS ( CurrentStudentTable ) ) >= PassLimit,
            "Pass",
            "Fail"
        )
    VAR CurrentResult = SELECTEDVALUE ( 'Table'[Pass_Fail] )
    RETURN
        IF (
            HASONEVALUE ( 'Table'[Subtest] ),
            CurrentResult,
            Result
        )
    Result = 
    IF ( 
        ISINSCOPE ( 'Table'[Test] )
            && ISINSCOPE ( 'Table'[Student] ),
        [Pass/Fail],
        SUMX ( 
            SUMMARIZE ( 'Table', 'Table'[Student], 'Table'[Test] ), 
            IF ( [Pass/Fail] = "Pass", 1 ) 
        )
    )
  • tamerj1's avatar
    tamerj1
    3 years ago

    afaherty 
    Please refer to attached

    Pass/Fail = 
    VAR PassLimit = SELECTEDVALUE ( 'Pass Limit'[Pass Limit] )
    VAR CurrentStudentTable =
        CALCULATETABLE ( 'Table', ALLEXCEPT ( 'Table', 'Table'[Student], 'Table'[Test] ) )
    VAR Passes =
        FILTER ( CurrentStudentTable, 'Table'[Pass_Fail] = "Pass" )
    VAR Result =
        IF (
            DIVIDE ( COUNTROWS ( Passes ), COUNTROWS ( CurrentStudentTable ) ) >= PassLimit,
            "Pass",
            "Fail"
        )
    VAR CurrentResult = SELECTEDVALUE ( 'Table'[Pass_Fail] )
    RETURN
        IF (
            HASONEVALUE ( 'Table'[Subtest] ),
            CurrentResult,
            Result
        )
    Result = 
    VAR T = SUMMARIZE ( 'Table', 'Table'[Student], 'Table'[Test] )
    VAR Students = COUNTROWS ( T )
    VAR Passed = SUMX ( T, IF ( [Pass/Fail] = "Pass", 1, 0 ) )
    VAR PassedPCT = FORMAT ( DIVIDE ( Passed, Students ), "Percent" )
    RETURN
    IF ( 
        ISINSCOPE ( 'Table'[Test] ),
        IF ( 
            ISINSCOPE ( 'Table'[Student] ),
            [Pass/Fail],
            "Passed " & Passed & " Student(s)" & UNICHAR ( 10 ) & "(" & PassedPCT & ")"
        )
    )