Summary

To trim text to a certain number of words, you can use a formula based on the SUBSTITUTE, FIND, and LEFT functions. In the example shown, the formula in D5 is:

=LEFT(B5,FIND("#",SUBSTITUTE(B5," ","#",C5))-1)

The result is "The cat sat" since the value for n in C5 is 3.

Generic formula

=LEFT(txt,FIND("#",SUBSTITUTE(txt," ","#",n))-1)

Explanation 

We need a way to split text at a certain marker that corresponds to a certain number of words. Excel doesn't have a built-in function to parse text by word, so are using the SUBSTITUTE function's "instance" argument to replace an "nth space" character with the pound sign (#), then using FIND and LEFT to discard all text after the marker.

Working from the inside out, SUBSTITUTE is configured to replace the nth occurrence of a space character, where n comes from column C, the text comes from column B, and "#" is hard coded.

=SUBSTITUTE(B5," ","#",C5)
=SUBSTITUTE("The cat sat on the mat."," ","#",3)
="The cat sat#on the mat."

The resulting string is returned to the FIND function, configured to look for "#".

=FIND("#","The cat sat#on the mat.)

Since the "#" is the 12th character in the text, FIND returns 12. We don't want to include the space character itself in, so we subtract 1:

=LEFT(B5,12-1)
=LEFT(B5,11)

LEFT returns the final result from the formula, "The cat sat".

Note: the pound character ("#") is arbitrary and can be replaced with any character that won't appear in the text.

Add ellipses or another character

To add "..." to the end of the trimmed text, use concatenation like this:

=LEFT(B5,FIND("#",SUBSTITUTE(B5," ","#",C5))-1)&"..."

You can replace "..." with anything you like.

Dave Bruns Profile Picture

AuthorMicrosoft Most Valuable Professional Award

Dave Bruns

Hi - I'm Dave Bruns, and I run Exceljet with my wife, Lisa. Our goal is to help you work faster in Excel. We create short videos, and clear examples of formulas, functions, pivot tables, conditional formatting, and charts.