Как в EXCEL «Иванов Иван Иванович» превратить в «Иванов И.И.»
Если Фамилия, Имя и Отчество (ФИО) хранятся в одной ячейке (например, в B1 ) и отсутствуют лишние пробелы, то превратить полное ФИО в Фамилию + инициалы можно с помощью этой формулы (см. файл примера ): =ЛЕВСИМВ(B1;НАЙТИ(» «;B1;1)+1)&».»&ПСТР(B1;НАЙТИ(» «;B1;НАЙТИ(» «;B1;1)+1)+1;1)&».»
Формула определяет позицию начала Имени и Отчества по пробелам (код символа пробел =32). Очевидно, что порядок следования фамилии и имени с отчеством важен для работы формулы.
Формула НАЙТИ(» «;B1;1) в выражении Иванов Иван Иванович . Соответственно, выражение ЛЕВСИМВ(B1;НАЙТИ(» «;B1;1)+1) выводит фамилию и первый инициал (первую букву имени).
Гарантировать, что в ячейке отсутствуют лишние пробелы можно предварительно применив формулу СЖПРОБЕЛЫ() .
Чтобы превратить Иванов Иван Иванович (в ячейке B2 ) в И.И. Иванов (инициалы перед фамилией) используйте формулу = ПСТР(B2;НАЙТИ(СИМВОЛ(32);B2;1)+1;1)&».»&ПСТР(B2;ПОИСК(СИМВОЛ(32);B2;НАЙТИ(СИМВОЛ(32);B2;1)+1)+1;1)&». «&ЛЕВСИМВ(B2;НАЙТИ(СИМВОЛ(32);B2;1)-1)
Совет : Если бы фамилия, имя и отчество хранились в отдельных ячейках , то формула была бы гораздо проще =ЛЕВСИМВ(B1;1)&».» То же относится и к другим строковым значениям: Адрес (индекс, страна, город, улица); Название книги (автор, название), банковские реквизиты (номер счета, банк, БИК) и др. Формулы становятся значительно проще, если разные по смыслу данные хранятся в отдельных ячейках.
Как сократить имя отчество до инициалов
Поз=0;
Найти(ВамилияПолностью,» «);
Фамилия=Сред(ФамилияПолностью,1,Поз-1);
ФамилияПолностью=Сред(ФамилияПолностью,Поз+1);
.
дальше по аналогии получаешь имя и отчество
.
В типовых — ищи глобальную функцию.
ды не ФИО() разве
Если у Вас в глобальном модуле есть такая готовая функция одлжите пожулуйста.
В типовой бухии есть «глФамилияИмяОтчество»
к сожалению у меня типового нету, до меня кто то его спер наверно
Меня всегда удивляют люди, которые пишут нетиповые конфигурации и затыкаются на таких простых вещах.
(8) А самому написать? В (3) Осталось добавить пять строк
(7) Для Казахстана?
(8) На этот шедевр из типовой бухии:
Функция ФИО(Сотрудник) Экспорт
Перем ПолноеИмя, Фамилия, ИмяОтчество, Имя, Отчество;
Перем ПозицияПервогоПробела, ПозицияВторогоПробела;
ПозицияПервогоПробела = Найти(ПолноеИмя, » «);
Если ПозицияПервогоПробела = 0 Тогда
Возврат ПолноеИмя;
Иначе
Фамилия = Лев(ПолноеИмя, ПозицияПервогоПробела);
ИмяОтчество = Сред(ПолноеИмя, ПозицияПервогоПробела+1);
ИмяОтчество = СокрЛ(ИмяОтчество);
Имя = Лев(ИмяОтчество, 1)+».»;
ПозицияВторогоПробела = Найти(ИмяОтчество, » «);
Если ПозицияВторогоПробела = 0 Тогда
Возврат Фамилия+Имя;
Иначе
Отчество = Сред(ИмяОтчество, ПозицияВторогоПробела+1);
Отчество = СокрЛ(Отчество);
Отчество = Лев(Отчество, 1)+».»;
Возврат Фамилия+Имя+Отчество;
КонецЕсли;
КонецЕсли;
КонецФункции
Как сократить имя и отчество?

В edit записывают Фамилия, Имя и Отчество. Например: Иванов Иван Иванович.
Как сократить до Иванов И.И.
И как проверить что бы в edit писали не сокращенно Иванов И.И. , а полностью Иванов Иван Иванович
Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Сократить имя и отчество до инициалов
Задан файл, каждая строка которого содержит информацию о студенте в виде «Фамилия Имя Отчество».
Строку в формате «фамилия, имя, отчество» преобразовать в формат «имя, отчество, фамилия»
последовательность содержит Ваша фамилия, имя, отчество. Превратить ее таким образом, чтобы сначала.

Ввести в окне имя, отчество и фамилию (именно в таком порядке) и преобразовать, чтобы получилось имя и фамилия
Нужно написать программу чтобы она умела: Ввести в окне имя, отчество и фамилию (именно в таком.

Сократить имя и отчество до инициалов
Задан файл, каждая строка которого содержит информацию о студенте в виде «Фамилия Имя Отчество».
884 / 586 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
А если напишут «И.И. И.И.И..И.И.И-И-И-ИИИ».
Разбить на подстроки по пробелам. Смотреть наличие точек и длину подстрок?
2373 / 775 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
Лучше всего сделать не одно окошко ввода, а три. Для фамилии, имени и отчества по отдельности.
А для проверки правильности ввода можно сделать примерно такую простенькую кодовую конструкцию для каждого окошка ввода.
1 2 3 4 5 6 7
var str: string; begin str:= Edit1.Text; if (length(str) < 3) or (pos('.',str) <> 0) then ShowMessage('Ошибка ввода. Вы ввели сокращенное имя в окно ввода, либо закончили его точкой.'); end;
Регистрация: 31.08.2011
Сообщений: 499
Сообщение от ValentinNemo 
Лучше всего сделать не одно окошко ввода, а три.
С этим бы я и сам справился, только это как то не красиво для ввода ФИО делать три окошка.
Добавлено через 1 минуту
Как то можно вводимые три слова разделить по отдельности и у последних двух оставить только первые буквы?
Добавлено через 1 минуту
Сообщение от GoodWeather 
Разбить на подстроки по пробелам. Смотреть наличие точек и длину подстрок?
Ну да,как то так. Только вот как?
884 / 586 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1

Сообщение было отмечено Michalich как решение
Решение
Например у TStringList есть любопытный функционал DelimitedText:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Procedure TForm2.Button1Click(Sender: TObject); Var SL: TStringList; i: Integer; Begin SL := TStringList.Create(); Try SL.Delimiter := ' '; SL.DelimitedText := Edit1.Text; For i := 0 To Pred(SL.Count) Do Begin ShowMessage('Фрагмент номер #' + IntToStr(i + 1) + ' равен: ' + SL[i]); End; Finally FreeAndNil(SL); End; End;
пофигист широкого профиля
4719 / 3154 / 858
Регистрация: 15.07.2013
Сообщений: 18,164
Сообщение от ValentinNemo 
Лучше всего сделать не одно окошко ввода, а три. Для фамилии, имени и отчества по отдельности.
Присоединяюсь.
9119 / 5908 / 2348
Регистрация: 21.01.2014
Сообщений: 25,280
Записей в блоге: 3

Сообщение было отмечено krapotkin как решение
Решение
Сообщение от Michalich 
только это как то не красиво для ввода ФИО делать три окошка
Как по мне, это единственно правильный вариант: данные, по возможности, должны быть атомарны.
5686 / 4447 / 1410
Регистрация: 14.04.2014
Сообщений: 19,910
Записей в блоге: 20
Следующая тема
Помогите, эти дебилы пишут Иван Иваныч Иванов, а надо Иванов Иван Иваныч )
3568 / 2103 / 744
Регистрация: 15.11.2015
Сообщений: 8,451
3 поля ввода, отбросить пробелы в начале и в конце и из полей Имя и Отчество брать только первую букву. Заодно и делать их заглавными.
Добавлено через 1 минуту
А вообще, инициалы это не совсем удобно потом читать. Лучше полное имя и отчество отображать.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Сократить до инициалов имя и отчество
С клавиатуры вводят строку: Фамилия Имя Отчество используя функции и процедуры для работы со.
Как сократить полное Фамилия Имя Отчество как Фамилия И.О. в t-sql
Как сократить полное "Фамилия Имя Отчество" как "Фамилия И.О." в SQL запросе Именно надо в SQL.

Ввести имя, отчество и фамилию; поменять имя и отчество местами
Ввести имя, отчество и фамилию. Поменять имя и отчество местами (через тип данных string).

Дана строка вида «Фамилия Имя Отчество». Получить строку вида Имя Отчество
Дана строка вида «Фамилия Имя Отчество». Получить строку вида Имя Отчество

Строки: вывести фамилию, имя и отчество студента, у которого самое короткое отчество
С клавиатуры вводится текст, который представляет собой список студентов группы с указанием.

С клавиатуры вводится строка «Фамилия Имя Отчество». Изменить вывод строки на «Имя Отчество Фамилия»
С клавиатуры вводится строка "Фамилия Имя Отчество". Изменить вывод строки на "Имя Отчество.
Или воспользуйтесь поиском по форуму:
Как сократить имя отчество до инициалов
Пробел нужно ставить – и между инициалами, и перед фамилией.
Проблема в том, что, насколько нам известно, нет ни одного ГОСТа или справочника, в котором содержалось бы однозначное указание – либо на то, что между инициалами должен быть пробел, либо на то, что между инициалами пробел недопустим. Можно ориентироваться на приведенные в ГОСТах и справочниках примеры, но в одних случаях пробелы там стоят, в других – не стоят.
Поэтому приходится руководствоваться логикой и здравым смыслом. Что такое пробел? Это признак нового слова. Мы же пишем Александр Сергеевич Пушкин с пробелами. Почему сокращения этих слов мы должны писать без пробелов? Другое дело, что при наборе текста на компьютерной клавиатуре лучше ставить не обычный пробел, а неразрывный (можно запомнить комбинацию клавиш: Ctrl+Shift+пробел), чтобы избежать ситуации, при которой инициалы останутся на одной строке, а фамилия будет перенесена на другую.
Где расположить инициалы – перед фамилией или после?
При адресовании должностному или физическому лицу инициалы указывают перед фамилией: И. И. Иванову, А. А. Петрову. При составлении библиографии или алфавитных списков лиц инициалы пишутся после фамилии, поскольку поиск рубрики указателя ведется по буквам фамилии: Иванов И. И.