Страницы: 1
RSS
Удаление символов до заглавной буквы
 
Доброго времени суток!

К сожалению, не удалось найти ответ на вопрос с помощью гугла, поэтому прошу помощи здесь.
По долгу службы приходится вручную удалять символы практически в каждой ячейке.
Проблема такая:
В каждой ячейке - Фамилия, Имя.
Нужна формула, которая будет удалять символы справа, то есть имени, до заглавной буквы.
Например: Петров, Николай -> Петров, Н
Буду безмерно благодарен за любую помощь.

Вариант "найти-заменить" невозможен, так как все имена латиницей и граждан со всего мира.
 
Если везде есть разделитель, то можно сначала исходный столбец разбить на два (фамилия и имя), в следующем прописать формулу сцепки фамилии и первой буквы имени.
... в этом мире не лжет, потому что не в состоянии, только одна вещь, и это - математика.
 
вариант функции в D1
Код
 Function uuu$(t$)
 With CreateObject("VBScript.RegExp"): .Pattern = "^.+, [А-ЯЁ]"
    uuu = .Execute(t)(0)
 End With
End Function
Изменено: sv2013 - 08.04.2017 17:31:52
 
Lefevr, логику Вашу понял.
Тогда вылезает новая проблема: есть граждане у которых имя состоит из не скольких слов.
Мне было бы достаточно, чтобы удалялись символы крайнего имени (например: Frazzoni Rotger, Roberto Gustavo -> Frazzoni Rotger, Roberto G), остальное я бы добил вручную.
При Вашем решении, будут сцепляться обе заглавные буквы или какая-то конкретная?
 
Добрый вечер, povetevivan!

У нас принято прикладывать файл-пример. В нем Вам и нарисуют простую формулу, решающую Вашу задачу.
Например - что-нибудь типа =ЛЕВСИМВ(A1;НАЙТИ(" ";A1)+1)&"."
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
povetevivan, между фамилией и именем всегда запятая стоит в исходниках?
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Михаил Лебедев, каюсь.

Вот небольшой пример как это должно выглядеть.  
 
Bema, запятая ставится всегда.  
 
Пример
 
Это хорошо, вот только согласитесь, что есть разница между
Цитата
povetevivan написал:
Например: Петров, Николай -> Петров, Н
и Frazzoni Rotger, Roberto Gustavo
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Bema,соглашусь.
Именно поэтому я написал, чтобы мне будет достаточно удалить символы крайнего правого слова.  
 
Какое максимальное количество слов может быть после запятой? Не попадется ли Вам Остап Бендер? ;)
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Bema, и Остапов хватает.
У индусов например очень интересные имена.  
В среднем от 1 до 4 слов.
Но подавляющее большинство, на которых уходит масса времени, это Фамилия и Имя. Мне бы с ними разобраться и уже будет небольшая победа.
 
Цитата
было бы достаточно, чтобы удалялись символы крайнего имени
На базе кода sv2013
Код
Function uuu$(t$)
 With CreateObject("VBScript.RegExp")
   If UBound(Split(t, " ")) <= 1 Then
    .Pattern = "^.+, [A-ZА-ЯЁ]"
   Else
    .Pattern = "^.+, .+ [A-ZА-ЯЁ]"
   End If
    uuu = .Execute(t)(0)
 End With
End Function
 
Цитата
povetevivan написал: ...Мне бы с ними разобраться...
Пока же вы предлагаете это сделать за вас форумчанам, да к тому же еще и "втемную".
См. Правила пп 2.2, 2.3.
И см_2 - раздел "Работа", если все за вас и без вашего участия.
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Z, а как я должен принимать участие в этом, если я попросту не знаю формул? Я никого не просил делать за меня мою работу.
Прошу простить, что сразу не прикрепил пример, поспешил.
Но тем не менее, добрые форумчане помогли, за что им большое спасибо.
Тему можно закрывать.
 
povetevivan, ну вот такой формульный вариант. Отработает до двух слов после запятой. Проверяйте.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Bema, огромное Вам спасибо и низкий поклон. Все отлично и так как нужно.
 
povetevivan, пожалуйста :)
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
Страницы: 1
Читают тему
Наверх