Как правильно настроить извлечение N-го по счету слова из ячейки таблицы Excel

Для извлечения необходимого по счету слова из из ячейки таблицы Excel, используйте следующие методы и способы.

Способ 1. Формулами

Допустим, у вас в ячейке есть полное ФИО, а вам необходимо извлечь только имя или только фамилию. В простом случае это можно сделать парой функций. Для извлечения первого слова в ячейке можно использовать вот такую конструкцию.

В простом случае это можно сделать парой функций

В простом случае это можно сделать парой функций

Или в англоязычном варианте =LEFT(A1;FIND(" ";A1)-1). Функция ПОИСК ищет позицию первого вхождения пробела, а функция ЛЕВСИМВ затем извлекает все символы с начала строки до этой позиции.

Для извлечения второго слова формула будет уже пострашнее.

Формула будет уже пострашнее

Формула будет уже пострашнее

Или в англоязычном варианте =MID(A1;SEARCH(" ";A1)+1;SEARCH(" ";A1;SEARCH(" ";A1)+1)-SEARCH(" ";A1)).

Формула для извлечения последнего слова тоже хороша 🙂

Формула будет тоже хороша

Формула будет тоже хороша

Или в англоязычном варианте =RIGHT(A1;LEN(A1)-FIND("*";SUBSTITUTE(A1;" ";"*";LEN(A1)-LEN(SUBSTITUTE(A1;" ";""))))).

Если подобное извлечение вам приходится делать часто, то проще будет один раз написать несложную макро-функцию на Visual Basic, которая сможет быстро и красиво извлекать любое по счету слово из любой ячейки.

Способ 2. Пользовательская макрофункция

Открываем редактор Visual Basic на вкладке Разработчик → Редактор Visual Basic (Developer → Visual Basic Editor) или жмем сочетание клавиш Alt+F11. Вставляем новый модуль (меню Insert → Module) и вводим туда текст вот этой пользовательской функции.

1
2
3
4
5
6
7
8
9
10
Function ExtractWord(Txt, n) As String
    Dim x As Variant
    Const DELIM = " "
    x = Split(Txt, DELIM)
    If n > 0 And n – 1 <= UBound(x) Then
        ExtractWord = x(n – 1)
    Else
        ExtractWord = ""
    End If
End Function

Теперь эту функцию можно найти в списке функций (Вставка → Функция) в категории Определенные пользователем (User Defined) и использовать со следующим синтаксисом: =ExtractWord(Txt; n), где

  • Txt – адрес ячейки с текстом, который делим;
  • n – порядковый номер извлекаемого фрагмента.
Теперь эту функцию можно найти в списке функций

Теперь эту функцию можно найти в списке функций

При необходимости символ-разделитель вместо пробела можно заменить на любой другой (запятую, точку с запятой и т.д.), изменив в третьей строке кода содержимое константы DELIM.


Top