Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Перестановка инициалов после фамилии - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Перестановка инициалов после фамилии
outline Дата: Воскресенье, 04.08.2013, 19:24 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Уважаемые дамы и господа прошу помочь новичку.
Не могу написать формула которая бы ставила инициалы после фамилии
как пример у меня в файле И.И. Петров , а мне нужно что бы было Петров И.И.
Реально ли это?если да то как?
Так же интересует формула которая бы переделывала имя и отчество в инициалы и ставила инициалы после фамилии как пример Иван Иванович Петров а надо Петров И.И.
 
Ответить
СообщениеУважаемые дамы и господа прошу помочь новичку.
Не могу написать формула которая бы ставила инициалы после фамилии
как пример у меня в файле И.И. Петров , а мне нужно что бы было Петров И.И.
Реально ли это?если да то как?
Так же интересует формула которая бы переделывала имя и отчество в инициалы и ставила инициалы после фамилии как пример Иван Иванович Петров а надо Петров И.И.

Автор - outline
Дата добавления - 04.08.2013 в 19:24
AlexM Дата: Воскресенье, 04.08.2013, 19:33 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
Для первого варианта
Код
=ЗАМЕНИТЬ(A1;1;5;"")&" "&ЛЕВСИМВ(A1;4)

Для второго
Код
=ПСТР(A3;ПОИСК(" ";A3;ПОИСК(" ";A3)+1)+1;99)&" "&ЛЕВСИМВ(A3;1)&"."&ПСТР(A3;ПОИСК(" ";A3)+1;1)&"."



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.


Сообщение отредактировал AlexM - Воскресенье, 04.08.2013, 19:52
 
Ответить
СообщениеДля первого варианта
Код
=ЗАМЕНИТЬ(A1;1;5;"")&" "&ЛЕВСИМВ(A1;4)

Для второго
Код
=ПСТР(A3;ПОИСК(" ";A3;ПОИСК(" ";A3)+1)+1;99)&" "&ЛЕВСИМВ(A3;1)&"."&ПСТР(A3;ПОИСК(" ";A3)+1;1)&"."

Автор - AlexM
Дата добавления - 04.08.2013 в 19:33
Матрёна Дата: Воскресенье, 04.08.2013, 19:40 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 398
Репутация: 40 ±
Замечаний: 0% ±

Мой вариант для 1 и 2 ситуации в 2 шага:
1. замечательный штатный режим EXCEL - Текст по столбцам,
2. не менее замечательные ТЕКСТОВЫЕ функции EXCEL - & (Сцепить) и ПСТР (выбор нужного количества символов с нужной позиции в текстовой ячейке).
К сообщению приложен файл: outline.xls (19.0 Kb)
 
Ответить
СообщениеМой вариант для 1 и 2 ситуации в 2 шага:
1. замечательный штатный режим EXCEL - Текст по столбцам,
2. не менее замечательные ТЕКСТОВЫЕ функции EXCEL - & (Сцепить) и ПСТР (выбор нужного количества символов с нужной позиции в текстовой ячейке).

Автор - Матрёна
Дата добавления - 04.08.2013 в 19:40
MCH Дата: Воскресенье, 04.08.2013, 19:44 | Сообщение № 4
Группа: Админы
Ранг: Старожил
Сообщений: 2008
Репутация: 752 ±
Замечаний: ±

Код
=ПСТР(A1&" "&A1;6;ДЛСТР(A1))
 
Ответить
Сообщение
Код
=ПСТР(A1&" "&A1;6;ДЛСТР(A1))

Автор - MCH
Дата добавления - 04.08.2013 в 19:44
jakim Дата: Воскресенье, 04.08.2013, 22:49 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1218
Репутация: 316 ±
Замечаний: 0% ±

Excel 2010
Мой вариант
.
Код
=MID(A1;LEN(LEFT(A1;5));222)&" "&LEFT(A1;5)
 
Ответить
Сообщение
Мой вариант
.
Код
=MID(A1;LEN(LEFT(A1;5));222)&" "&LEFT(A1;5)

Автор - jakim
Дата добавления - 04.08.2013 в 22:49
Michael_S Дата: Воскресенье, 04.08.2013, 23:11 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
jakim, а почему 222?
:D
 
Ответить
Сообщениеjakim, а почему 222?
:D

Автор - Michael_S
Дата добавления - 04.08.2013 в 23:11
jakim Дата: Воскресенье, 04.08.2013, 23:48 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1218
Репутация: 316 ±
Замечаний: 0% ±

Excel 2010
А чтобы не ошибиться в количестве знаков. Привычка.
 
Ответить
Сообщение
А чтобы не ошибиться в количестве знаков. Привычка.

Автор - jakim
Дата добавления - 04.08.2013 в 23:48
User799 Дата: Понедельник, 30.08.2021, 15:46 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
А как усложнится формула, если в исходной ячейке может быть не одна фамилия с инициалами, а две? То есть "И.И. Петров, А.А. Иванов", а надо "Петров И.И., Иванов А.А."
 
Ответить
СообщениеА как усложнится формула, если в исходной ячейке может быть не одна фамилия с инициалами, а две? То есть "И.И. Петров, А.А. Иванов", а надо "Петров И.И., Иванов А.А."

Автор - User799
Дата добавления - 30.08.2021 в 15:46
Nic70y Дата: Понедельник, 30.08.2021, 17:17 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 9131
Репутация: 2415 ±
Замечаний: 0% ±

Excel 2010
Код
=ПСТР(A1;6;ПОИСК(",";A1)-6)&" "&ЛЕВБ(A1;4)&", "&ПСТР(A1;ПОИСК("\";ПОДСТАВИТЬ(A1;" ";"\";3))+1;99)&ПСТР(A1;ПОИСК(",";A1)+1;5)


ЮMoney 41001841029809
 
Ответить
Сообщение
Код
=ПСТР(A1;6;ПОИСК(",";A1)-6)&" "&ЛЕВБ(A1;4)&", "&ПСТР(A1;ПОИСК("\";ПОДСТАВИТЬ(A1;" ";"\";3))+1;99)&ПСТР(A1;ПОИСК(",";A1)+1;5)

Автор - Nic70y
Дата добавления - 30.08.2021 в 17:17
User799 Дата: Понедельник, 30.08.2021, 21:52 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 16
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Nic70y, спасибо. Существенное изменение. Опасался, что буду не совсем правильно понят, в итоге так и случилось. Ваш вариант подходит для ситуаций, где ФИО в исходной ячейки именно 2, но не 1,3 или 4. А за моей нечеткой формулировкой скрывался запрос на формулу, которая работала бы для всех случаев - и когда в исходнике 1 фамилия и ИО, и когда 2, и когда больше.
То есть идет столбец:
И.И. Иванов
А.А. Петров, И.И. Иванов
О.О. Сидоров, А.А. Петров, И.И. Иванов
А нужно всех их перенести в соседний столбец с переносом инициалов в конец. Но, возможно, проще тогда не запрашивать длинющую формулу, а сделать сначала разбивку по столбцам, потом применить формулу для каждого ФИО по отдельности, а затем сцепить. Вопрос трудоемкости.


Сообщение отредактировал User799 - Понедельник, 30.08.2021, 21:57
 
Ответить
СообщениеNic70y, спасибо. Существенное изменение. Опасался, что буду не совсем правильно понят, в итоге так и случилось. Ваш вариант подходит для ситуаций, где ФИО в исходной ячейки именно 2, но не 1,3 или 4. А за моей нечеткой формулировкой скрывался запрос на формулу, которая работала бы для всех случаев - и когда в исходнике 1 фамилия и ИО, и когда 2, и когда больше.
То есть идет столбец:
И.И. Иванов
А.А. Петров, И.И. Иванов
О.О. Сидоров, А.А. Петров, И.И. Иванов
А нужно всех их перенести в соседний столбец с переносом инициалов в конец. Но, возможно, проще тогда не запрашивать длинющую формулу, а сделать сначала разбивку по столбцам, потом применить формулу для каждого ФИО по отдельности, а затем сцепить. Вопрос трудоемкости.

Автор - User799
Дата добавления - 30.08.2021 в 21:52
Nic70y Дата: Вторник, 31.08.2021, 08:21 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 9131
Репутация: 2415 ±
Замечаний: 0% ±

Excel 2010
Вопрос трудоемкости
по ходу нужен макрос.
но скорей всего это уже совсем другая тема, в другом разделе
создайте ее там:
http://www.excelworld.ru/forum/10


ЮMoney 41001841029809
 
Ответить
Сообщение
Вопрос трудоемкости
по ходу нужен макрос.
но скорей всего это уже совсем другая тема, в другом разделе
создайте ее там:
http://www.excelworld.ru/forum/10

Автор - Nic70y
Дата добавления - 31.08.2021 в 08:21
прохожий2019 Дата: Вторник, 31.08.2021, 09:34 | Сообщение № 12
Группа: Проверенные
Ранг: Старожил
Сообщений: 1395
Репутация: 364 ±
Замечаний: 0% ±

365 Beta Channel
нужен макрос.
или PQ :)
[vba]
Код
let
    f=(x)=>[a=Text.Split(x,", "),
            b = List.Transform(a,g),
            c = Text.Combine(b,", ")][c],
    g=(x)=>[a = Text.Split(x," "),
            b = a{1}&" "&a{0}][b],
    
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    to = Table.TransformColumns(from,{"ФИО",f})
in
    to
[/vba] то же самое можно и на LAMBDA организовать, но не в 2013 офисе...
К сообщению приложен файл: tst123.xlsx (17.9 Kb)


Сообщение отредактировал прохожий2019 - Вторник, 31.08.2021, 17:03
 
Ответить
Сообщение
нужен макрос.
или PQ :)
[vba]
Код
let
    f=(x)=>[a=Text.Split(x,", "),
            b = List.Transform(a,g),
            c = Text.Combine(b,", ")][c],
    g=(x)=>[a = Text.Split(x," "),
            b = a{1}&" "&a{0}][b],
    
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    to = Table.TransformColumns(from,{"ФИО",f})
in
    to
[/vba] то же самое можно и на LAMBDA организовать, но не в 2013 офисе...

Автор - прохожий2019
Дата добавления - 31.08.2021 в 09:34
MCH Дата: Вторник, 31.08.2021, 13:32 | Сообщение № 13
Группа: Админы
Ранг: Старожил
Сообщений: 2008
Репутация: 752 ±
Замечаний: ±

когда в исходнике 1 фамилия и ИО, и когда 2, и когда больше.

UDF для любого количества фамилий, разделенных запятыми:
[vba]
Код
Function IOF2FIO(txt As String) As String
    Dim x, fio As String
    For Each x In Split(Replace(txt, " ", ""), ",")
        fio = fio & ", " & Mid(x & " " & x, 5, Len(x) + 1)
    Next x
    IOF2FIO = Mid(fio, 3)
End Function
[/vba]
 
Ответить
Сообщение
когда в исходнике 1 фамилия и ИО, и когда 2, и когда больше.

UDF для любого количества фамилий, разделенных запятыми:
[vba]
Код
Function IOF2FIO(txt As String) As String
    Dim x, fio As String
    For Each x In Split(Replace(txt, " ", ""), ",")
        fio = fio & ", " & Mid(x & " " & x, 5, Len(x) + 1)
    Next x
    IOF2FIO = Mid(fio, 3)
End Function
[/vba]

Автор - MCH
Дата добавления - 31.08.2021 в 13:32
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!