Предполагая, что ваши ячейки следуют одному и тому же формату, вы можете использовать различные текстовые функции для получения имени.
Для этой функции требуется следующий формат:
- Некоторый исходный текстсопровождаемый
- 2 новыми строками в Excel (представленными как
CHAR(10)
- Имя, которое состоит из имени, пробела, затем фамилии
- Aвторой пробел в той же строке, что и имя, за которым следует дополнительный текст.
С этим форматом вы можете использовать следующую формулу (при условии, что ваши данные находятся в таблице Excel, с колонкой исходныхданные с именем Текст ):
=MID([@Text],SEARCH(CHAR(10),[@Text],SEARCH(CHAR(10),[@Text])+1)+1,SEARCH(" ",MID([@Text],SEARCH(CHAR(10),[@Text],SEARCH(CHAR(10),[@Text])+1)+1,LEN([@Text])),SEARCH(" ",MID([@Text],SEARCH(CHAR(10),[@Text],SEARCH(CHAR(10),[@Text])+1)+1,LEN([@Text])))+1)-1)
Чтобы придумать эту формулу, мы предпримем следующие шаги:
Сначала мы выясним, где начинается имя.мы знаем, что это происходит после двух новых строк, поэтому мы используем:
=SEARCH(CHAR(10),[@Text],SEARCH(CHAR(10),[@Text])+1)+1
Внутренняя (встречающаяся секунда) SEARCH
находит первую новую строку, а внешняя (встречающаяся первая) находит вторую новую строку.
Теперь, когда у нас есть это значение, мы можем использовать его дляопределите оставшуюся часть строки (после 2 новых строк).Допустим, предыдущая формула была сохранена в столбце таблицы с именем Start of Name
.Тогда вторая формула будет иметь вид:
=MID([@Text],[@[Start of Name]],LEN([@Text]))
Обратите внимание, что мы используем длину всего текста, которая по определению больше, чем нам нужно.Однако это не проблема, поскольку Excel возвращает меньшее значение между последним аргументом MID
и фактической длиной текста.
Как только мы получим текст с начала имени, нам нужнорассчитать позицию 2-го пробела (там, где заканчивается имя).Чтобы сделать , что , нам нужно вычислить позицию первого пространства.Это похоже на то, как мы вычислили начало имени ранее (которое начинается после 2 новых строк).Нам нужна следующая функция:
=SEARCH(" ",[@[Rest of String]],SEARCH(" ",[@[Rest of String]])+1)-1
Итак, теперь мы знаем, где начинается имя (после 2 новых строк) и где оно заканчивается (после 2-го пробела).Предполагая, что эти числа хранятся в столбцах с именами Start of Name
и To Second Space
соответственно, мы можем использовать следующую формулу для получения имени:
=MID([@Text],[@[Start of Name]],[@[To Second Space]])
Это эквивалентно первой формуле: Разница в том, чтопервая формула не использует никаких «вспомогательных столбцов».
Конечно, если какая-либо ячейка не соответствует этому формату, вам не повезет.Использование формул Excel для разбора текста может быть привередливым и негибким.Например, если у кого-то есть отчество или инициалы с пробелами (например, PK Subban был PK Subban), или было Jr.
или что-то еще, ваша работа будет намного сложнее.
Другой альтернативой является использование регулярных выражений для получения нужных вам данных.Я бы рекомендовал этот подробный ответ в качестве учебника для начинающих.Хотя у вас все еще есть те же проблемы с форматами имен.
Наконец, есть обязательные программисты Falsehoods, которые верят в имена как предупреждение против принятия любого стандартного формата имени.