
Общая формула
=LEFT(txt,FIND("#",SUBSTITUTE(txt," ","#",n))-1)
Резюме
Чтобы обрезать текст до определенного количества слов, вы можете использовать формулу, основанную на функциях ЗАМЕНА, НАЙТИ и ВЛЕВО. В показанном примере формула в xxx:
=LEFT(B5,FIND("#",SUBSTITUTE(B5," ","#",C5))-1)
Объяснение
Нам нужен способ разбить текст по определенному маркеру, который соответствует определенному количеству слов. В Excel нет встроенной функции для синтаксического анализа текста по слову, поэтому мы используем аргумент "instance" функции SUBSTITUTE для замены символа "n-й пробел" на знак решетки (#), а затем с помощью FIND и LEFT отбрасываете все текст после маркера.
Работая изнутри, SUBSTITUTE настроен на замену n-го символа пробела, где n - из столбца C, текст - из столбца B, а "#" жестко запрограммирован.
=SUBSTITUTE(B5," ","#",C5) =SUBSTITUTE("The cat sat on the mat."," ","#",3) ="The cat sat#on the mat."
Результирующая строка возвращается в функцию НАЙТИ, настроенную на поиск "#".
=FIND("#","The cat sat#on the mat.)
Поскольку "#" является 12-м символом в тексте, НАЙТИ возвращает 12. Мы не хотим включать сам пробел, поэтому вычитаем 1:
=LEFT(B5,12-1) =LEFT(B5,11)
ВЛЕВО возвращает окончательный результат формулы «Кот сел».
Примечание: символ решетки ("#") является произвольным и может быть заменен любым символом, который не появляется в тексте.
Добавить эллипсы или другой символ
Чтобы добавить «…» в конец обрезанного текста, используйте конкатенацию следующим образом:
=LEFT(B5,FIND("#",SUBSTITUTE(B5," ","#",C5))-1)&"… "
Вы можете заменить "…" на что угодно.