Purpose: sum values in a range of cells based on whether another range contains specific text
Summary of steps on this page
- Use Excel’s SEARCH function to look for specific text in a range of cells
- Convert the SEARCH results into TRUEs and FALSEs using ISNUMBER
- Use the TRUE and FALSE values to then sum the values. Two options:
Excel’s SEARCH function
Syntax – SEARCH()
= SEARCH( text_to_find, within_text, [start_number])
SEARCH() function arguments
- text_to_find = the string of text to search for
- within_text = the cell reference of the text (string) to look in
- start_number (optional) = the position number of the character in the target string to start looking from.
Excel’s SEARCH function returns the position number of where the first character in the search string appears in the target string.
See examples below:
- You can search for a hard-coded string (e.g. “mini”), or a cell reference containing the text to search for (cell reference $C$2 in the example shown below);
- If the target cell does not contain the search text, Excel returns a #VALUE! error. To return a more ‘user friendly’ result than the #VALUE! error, you can wrap the SEARCH function in an IFERROR statement to return “Not found” if the cell does not contain the search text.
- SEARCH is NOT case sensitive. To search for case sensitive text, use Excel’s FIND function.
Worked example
Using the SEARCH function shown above, sum the values in column I, based on whether the Items in column H contain the text string “mini”
Turn the results of the SEARCH function into TRUE/FALSE values using ISNUMBER
In order to specify which values to sum from column I, it will be more helpful to have ‘TRUE/FALSE’ values returned from the SEARCH() function, rather than the start position number of the search string.
We know that SEARCH() returns a number if the text is found, or an error message if the text is not found. Therefore, we can simply test whether or not the result of the SEARCH() function is a number, using ISNUMBER().
Syntax – search for text and return TRUE if found, or FALSE if not found
=ISNUMBER( SEARCH (“text_to_find”, cell_ref))
Use SUMIF to sum the values based on the SEARCH for specific text
Syntax – SUMIF
=SUMIF(range_to_look, criteria, [range_to_sum])
- where range_to_look = the range to look in;
- criteria = criteria you specify, e.g. numeric or text values to check against;
- range_to_sum (optional) = range of values to sum which can be different to the range you ask Excel to check the criteria in.
We can use Excel’s SUMIF function to sum the values in column I if the values in column J are ‘TRUE’. In this method, we’re using two separate formulas in the two columns I and J, because we can’t wrap the ISNUMBER and SEARCH formulas inside SUMIF.
However, another method uses SUMPRODUCT and combines the two steps into one, see below:
Use SUMPRODUCT to sum the values based on the SEARCH for specific text
We wrap our ISNUMBER and SEARCH formulas inside a SUMPRODUCT() function.
We just need to make one small adjustment by adding either a double dash ‘–‘, or asterisk ‘*’ before the ISNUMBER formula to turn the TRUEs and FALSEs into 1’s and 0’s; SUMPRODUCT can use these values to determine which values to sum.
We therefore don’t need the separate formulas in column J to create this sum of values based on the specific text in column H.