Explanation
At the core, we are using the INDEX function to retrieve the value at a given row or column number like this:
=INDEX(C5:G9,row,column)
The range C5:C9 defines the matrix values. What’s left is to figure out the correct row and column numbers, and for that we use the MATCH function. To get a row number for INDEX (the impact), we use:
MATCH(impact,B5:B9,0)
To get a column number for INDEX (the impact), we use:
MATCH(certainty,C4:G4,0)
In both cases, MATCH is set up to perform an exact match. When certainty is “possible” and impact is “major” MATCH calculates row and column numbers as follows:
=INDEX(C5:G9,4,3)
The INDEX function then returns the value at the fourth row and third column, 12.
For a more detailed explanation of how to use INDEX and MATCH, see this article .
Explanation
This formula uses the named range key (C4:G4) for convenience only. Without the named range, you’ll want to use an absolute reference so the formula can be copied.
In cell I7, we have this formula:
=SUM(--(C7:G7=key))
working from the inside-out, this expression is evaluated first:
C7:G7=key // compare answers to key
The result is an array of TRUE FALSE values like this:
{TRUE,TRUE,TRUE,FALSE,TRUE}
TRUE values indicate a correct answer, FALSE values indicate an incorrect answer.
To coerce the TRUE and FALSE values to numbers, we use a double negative :
--({TRUE,TRUE,TRUE,FALSE,TRUE}) // get 1's and 0's
The is an array of 1’s and 0’s delivered directly to the SUM function:
=SUM({1,1,1,0,1}) // sum correct
The SUM function then returns the final result, 4.
Incorrect answers
The formula in J7 counts incorrect answers in almost the same way:
=SUM(--(C7:G7<>key))
The only difference is that we are now using the not equal to (<>) logical operator:
=SUM(--(C7:G7<>key))
=SUM(--({FALSE,FALSE,FALSE,TRUE,FALSE}))
=SUM({0,0,0,1,0})
=1
Percent correct
The formula in K7 calculates the percentage of correct answers like this:
=I7/COUNTA(key) // divide correct by total
Cell I7 already contains the count of correct answers. This is divided by the total count of quiz answers, which is calculated with the COUNTA function:
COUNTA(key) // count total
The result is formatted with the percentage number format .