Explanation

The core of this formula is SUMIF, which is used to lookup the correct values for F and H. Using SUMIF to lookup values is a more advanced technique that works well when the values are numeric , and there are no duplicates in the “lookup table”.

The trick in this case is that the criteria for SUMIF is not a single value, but rather an array of values in the range C5:G5:

=SUMPRODUCT(SUMIF(codes,C5:G5,values))

Because we are giving SUMIF more than one criteria, SUMIF will return more than one result. In the example shown, the result of SUMIF is the following array:

{1,0.5,0,0,0}

Note that we correctly get 1 for each “F” and 0.5 for each “H”., and blank values in the week generate zero.

Finally, we use SUMPRODUCT to add up the values in the array returned by SUMIF. Because there is only a single array, SUMPRODUCT simply returns the sum of all values.

Explanation

The INDEX function looks up values by position. For example, this formula retrieves the value for Acme sales in Jan:

=INDEX(data,1,1)

The INDEX function has a special and non-obvious behavior: when the row number argument is supplied as zero or null, INDEX retrieves all values in the column referenced by the column number argument. Likewise, when the column number is supplied as zero or nothing, INDEX retrieves all values in the row referenced by the row number argument:

=INDEX(data,0,1) // all of column 1
=INDEX(data,1,0) // all of row 1

In the example for formula, we supply the named range “data” for array, and we pick up the column number from H2. For row number, we deliberately supply zero. This causes INDEX to retrieve all values in column 2 of “data’. The formula is solved like this:

=SUM(INDEX(data,0,2))
=SUM({9700;2700;23700;16450;17500})
=70050

Other calculations

You can use the same approach for other calculations by replacing SUM with AVERAGE, MAX, MIN, etc. For example, to get an average of values in the third month, you can use:

=AVERAGE(INDEX(data,0,3))

More than one column or row

To handle return more than one row or column with INDEX, see the approach described here to “dereference” INDEX.