Explanation

Note: if a keyword appears more than once in a given cell, it will only be counted once. In other words, the formula only counts instances of different keywords.

The core of this formula is the ISNUMBER + SEARCH approach to finding text in a cell, which is explained in more detail here . In this case, we are looking in each cell for all words in the named range “keywords” (E5:E9). We do this by passing the range into SEARCH as the find_text argument. Because we pass in an array of 5 items:

{"green";"orange";"white";"blue";"pink"}

we get an array of 5 items back as a result:

{#VALUE!;#VALUE!;1;#VALUE!;14}

Numbers correspond to matches, and the #VALUE! error means no match was found. In this case, because we don’t care where the text was found in the cell, we use ISNUMBER to convert the array into TRUE and FALSE values:

{FALSE;FALSE;TRUE;FALSE;TRUE}

And the double negative (–) to change these into 1s and zeros:

{0;0;1;0;1}

The SUMPRODUCT function then simply returns the sum of the array, 2 in this case.

Handling empty keywords

If the keyword range contains empty cells, the formula won’t work correctly, because the SEARCH function returns zero when looking for an empty string (""). To filter any empty cells in the keyword range, you can use the variation below:

{=SUMPRODUCT(--ISNUMBER(SEARCH(IF(keywords<>"",keywords),B5)))}

Note: this version an array formula and must be entered with control + shift + enter.

Explanation

First, the LEN function counts total characters in the cell B5.

Next SUBSTITUTE removes all “line returns” from the text in B5 by looking for CHAR(10) which is the character code for the return character in Windows. LEN returns the result inside of a second LEN, which counts characters without carriage returns.

The second count is subtracted from the first, and 1 is added to the final result, since the number of lines is the number of returns + 1.

Dealing with empty cells

The formula in the example shown will return 1 even if a cell is empty. If you need to guard against this problem, you can wrap the formula in IF statement like so:

=IF(ISBLANK(B5),0,LEN(B5)-LEN(SUBSTITUTE(B5,CHAR(10),""))+1)

Mac version

=LEN(B5)-LEN(SUBSTITUTE(B5,CHAR(13),""))+1

In Excel 365 , both Win and Mac versions of Excel use CHAR(10) as a line break.