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

Вход

Регистрация

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

 

= Мир MS Excel/Разделение ФИО в три ячейки с помощью формул - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Работа и общение » Мозговой штурм » Разделение ФИО в три ячейки с помощью формул (Формулами! "Текст по столбцам" конкретно здесь не предлагать)
Разделение ФИО в три ячейки с помощью формул
Gustav Дата: Пятница, 21.12.2012, 11:44 | Сообщение № 1
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2748
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Уважаемые коллеги, есть предложение предновогодней разминки на тему этой очень традиционной задачки. Навеяно сообщением отсюда: http://www.excelworld.ru/forum/7-2804-33392-16-1355982200 .

В Интернете решений - масса, от ручного "Текст по столбцам" до пользовательских функций (UDF), формулами - тоже много. Хочется найти - именно формулами, но самое компактное по общему количеству знаков.

Постановка задачи такая. В ячейке A1 находится правильное полное ФИО, без концевых (слева и справа) пробелов и по одному пробелу между словами. В ячейках B1, C1, D1 нужно вывести Фамилию, Имя, Отчество соответственно по отдельности, без (!) концевых пробелов. В формулах можно использовать ссылки на любые из всех четырех ячеек A1:D1 (а не только на исходную A1), т.е. можно, например, как-то использовать результаты, полученные в соседних ячейках.

Подсчет знаков предлагается вести суммированием символов уникальных формул, помещенных в ячейки B1, C1, D1. Это означает, что если все формулы разные, то суммируются количества символов этих трех формул (включая начальные символы = ). Если формула получается одна, но такая, которая в ячейке B1 дает Фамилию, а после копирования в C1 и D1 - Имя и Отчество, то конкурсным результатом является кол-во символов этой одной формулы. Одной считаем и формулу массива, введенную одновременно в 3 ячейки при помощи Ctrl+Shift+Enter (как разновидность копирования). Если же, скажем, в ячейке B1 - одна формула, в C1 - другая, а в D1 - полученная копированием C1, то количество символов решения определяется двумя (уникальными) формулами в B1 и C1.

Можно включать в решение также именованные (Ctrl+F3) формулы. В этом случае помимо чисто формульных символов в поле "Диапазон", начиная с =, в подсчет включается также само "Имя" именованной формулы (т.е. длина имени).

В качестве начального ориентира есть годовалой давности решение Сержа здесь: http://www.programmersforum.ru/showpost.php?p=894600&postcount=5 .

Там 3 разные формулы: 26 + 108 + 24 = 158 знаков. Пусть это значение и будет начальным приближением. Правда, в этом решении Фамилия и Имя, получающиеся в B1 и C1, содержат правые концевые пробелы. Но я уверен, что в строгом правильном решении знаков может быть существенно меньше.

P.S. Закрепим в правило также разумное ограничение - общая длина текста в A1 не превышает 99 символов.

P.S.2. Сделаем правилом еще одно разумное ограничение, органично напрашивающееся из предыдущего - длина одного компонента (слова) ФИО не превышает 32 символа. Таким образом, максимально 32 символа х 3 слова + 2 пробела = 98 символов, т.е. в пределах 99.


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Суббота, 22.12.2012, 01:25
 
Ответить
СообщениеУважаемые коллеги, есть предложение предновогодней разминки на тему этой очень традиционной задачки. Навеяно сообщением отсюда: http://www.excelworld.ru/forum/7-2804-33392-16-1355982200 .

В Интернете решений - масса, от ручного "Текст по столбцам" до пользовательских функций (UDF), формулами - тоже много. Хочется найти - именно формулами, но самое компактное по общему количеству знаков.

Постановка задачи такая. В ячейке A1 находится правильное полное ФИО, без концевых (слева и справа) пробелов и по одному пробелу между словами. В ячейках B1, C1, D1 нужно вывести Фамилию, Имя, Отчество соответственно по отдельности, без (!) концевых пробелов. В формулах можно использовать ссылки на любые из всех четырех ячеек A1:D1 (а не только на исходную A1), т.е. можно, например, как-то использовать результаты, полученные в соседних ячейках.

Подсчет знаков предлагается вести суммированием символов уникальных формул, помещенных в ячейки B1, C1, D1. Это означает, что если все формулы разные, то суммируются количества символов этих трех формул (включая начальные символы = ). Если формула получается одна, но такая, которая в ячейке B1 дает Фамилию, а после копирования в C1 и D1 - Имя и Отчество, то конкурсным результатом является кол-во символов этой одной формулы. Одной считаем и формулу массива, введенную одновременно в 3 ячейки при помощи Ctrl+Shift+Enter (как разновидность копирования). Если же, скажем, в ячейке B1 - одна формула, в C1 - другая, а в D1 - полученная копированием C1, то количество символов решения определяется двумя (уникальными) формулами в B1 и C1.

Можно включать в решение также именованные (Ctrl+F3) формулы. В этом случае помимо чисто формульных символов в поле "Диапазон", начиная с =, в подсчет включается также само "Имя" именованной формулы (т.е. длина имени).

В качестве начального ориентира есть годовалой давности решение Сержа здесь: http://www.programmersforum.ru/showpost.php?p=894600&postcount=5 .

Там 3 разные формулы: 26 + 108 + 24 = 158 знаков. Пусть это значение и будет начальным приближением. Правда, в этом решении Фамилия и Имя, получающиеся в B1 и C1, содержат правые концевые пробелы. Но я уверен, что в строгом правильном решении знаков может быть существенно меньше.

P.S. Закрепим в правило также разумное ограничение - общая длина текста в A1 не превышает 99 символов.

P.S.2. Сделаем правилом еще одно разумное ограничение, органично напрашивающееся из предыдущего - длина одного компонента (слова) ФИО не превышает 32 символа. Таким образом, максимально 32 символа х 3 слова + 2 пробела = 98 символов, т.е. в пределах 99.

Автор - Gustav
Дата добавления - 21.12.2012 в 11:44
MCH Дата: Пятница, 21.12.2012, 12:31 | Сообщение № 2
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Есть универсальная (копируемая из B1 в C1 и D1) формула - 73 знака
 
Ответить
СообщениеЕсть универсальная (копируемая из B1 в C1 и D1) формула - 73 знака

Автор - MCH
Дата добавления - 21.12.2012 в 12:31
Gustav Дата: Пятница, 21.12.2012, 12:50 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2748
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Quote (MCH)
Есть универсальная (копируемая из B1 в C1 и D1) формула - 73 знака

Достойное начало! smile
Я же пока дотелепал до 119 в трёх формулах. Пожалуй, буду искать универсалку...

P.S. Упс! Нашёл универсалку на 75 символов. Сильно подозреваю, что это в том же русле, что и 73, просто я несколько перестраховался в мелочах... wink


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Пятница, 21.12.2012, 15:52
 
Ответить
Сообщение
Quote (MCH)
Есть универсальная (копируемая из B1 в C1 и D1) формула - 73 знака

Достойное начало! smile
Я же пока дотелепал до 119 в трёх формулах. Пожалуй, буду искать универсалку...

P.S. Упс! Нашёл универсалку на 75 символов. Сильно подозреваю, что это в том же русле, что и 73, просто я несколько перестраховался в мелочах... wink

Автор - Gustav
Дата добавления - 21.12.2012 в 12:50
Gustav Дата: Суббота, 22.12.2012, 01:46 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2748
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Михаил, я добавил в правила в сообщении № 1 незначительные детали: про формулу массива и про 32 символа. Про массив, думаю, это и так неявно имелось в виду с самого начала (как вариант копирования). Ограничение же в 32 символа лично мне дает копеечную экономию в 1-2 знака smile но мне кажется, оно вполне имеет право на жизнь, так как на практике вряд ли найдётся какой-либо компонент ФИО, превышающий эту длину.

Ну, и спешу сообщить о своём достижении 65 знаков. Формула - массивная, располагающаяся в 3-х соседних ячейках.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеМихаил, я добавил в правила в сообщении № 1 незначительные детали: про формулу массива и про 32 символа. Про массив, думаю, это и так неявно имелось в виду с самого начала (как вариант копирования). Ограничение же в 32 символа лично мне дает копеечную экономию в 1-2 знака smile но мне кажется, оно вполне имеет право на жизнь, так как на практике вряд ли найдётся какой-либо компонент ФИО, превышающий эту длину.

Ну, и спешу сообщить о своём достижении 65 знаков. Формула - массивная, располагающаяся в 3-х соседних ячейках.

Автор - Gustav
Дата добавления - 22.12.2012 в 01:46
vikttur Дата: Суббота, 22.12.2012, 02:14 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

73, не массивная.


Сообщение отредактировал vikttur - Суббота, 22.12.2012, 02:14
 
Ответить
Сообщение73, не массивная.

Автор - vikttur
Дата добавления - 22.12.2012 в 02:14
MCH Дата: Суббота, 22.12.2012, 10:08 | Сообщение № 6
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Цитата (Gustav)
Ну, и спешу сообщить о своём достижении 65 знаков

А ведь достаточно 64 знака 65


Сообщение отредактировал MCH - Суббота, 22.12.2012, 11:20
 
Ответить
Сообщение
Цитата (Gustav)
Ну, и спешу сообщить о своём достижении 65 знаков

А ведь достаточно 64 знака 65

Автор - MCH
Дата добавления - 22.12.2012 в 10:08
Gustav Дата: Понедельник, 24.12.2012, 15:20 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2748
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Дадим еще время или будем потихоньку вскрываться?

Если вскрываться, то у нас с Михаилом абсолютно совпадающее решение на 65 знаков (обсуждено в привате). Скорее всего, у Виктора решение аналогичное, просто чуть не дотянутое до финальной формы.


МОИ: Ник, Tip box: 41001663842605
 
Ответить
СообщениеДадим еще время или будем потихоньку вскрываться?

Если вскрываться, то у нас с Михаилом абсолютно совпадающее решение на 65 знаков (обсуждено в привате). Скорее всего, у Виктора решение аналогичное, просто чуть не дотянутое до финальной формы.

Автор - Gustav
Дата добавления - 24.12.2012 в 15:20
MCH Дата: Понедельник, 24.12.2012, 18:21 | Сообщение № 8
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Цитата (Gustav)
Дадим еще время или будем потихоньку вскрываться?

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

Интересным было бы сделать решение более универсальным, без ограничение на кол-во символов, условно задаем номер слова по порядку (1 или 2 или 3) на выходе получаем это слово (без использования большого кол-ва пробелов, с последующим их удалением).
Что то типа такого:
В A1 - "Иванов Иван Иванович"
В B1 - формула =ПСТР(A1;x;y), где x и y - расчетываются формульно, например если нужно извлечь второе слово, то x=8, y=4

PS: Жаль, что у форумчан пропадает интерес к разделу
 
Ответить
Сообщение
Цитата (Gustav)
Дадим еще время или будем потихоньку вскрываться?

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

Интересным было бы сделать решение более универсальным, без ограничение на кол-во символов, условно задаем номер слова по порядку (1 или 2 или 3) на выходе получаем это слово (без использования большого кол-ва пробелов, с последующим их удалением).
Что то типа такого:
В A1 - "Иванов Иван Иванович"
В B1 - формула =ПСТР(A1;x;y), где x и y - расчетываются формульно, например если нужно извлечь второе слово, то x=8, y=4

PS: Жаль, что у форумчан пропадает интерес к разделу

Автор - MCH
Дата добавления - 24.12.2012 в 18:21
Serge_007 Дата: Понедельник, 24.12.2012, 22:42 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Цитата (MCH)
Жаль, что у форумчан пропадает интерес к разделу

Почему ты так решил?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата (MCH)
Жаль, что у форумчан пропадает интерес к разделу

Почему ты так решил?

Автор - Serge_007
Дата добавления - 24.12.2012 в 22:42
MCH Дата: Вторник, 25.12.2012, 07:40 | Сообщение № 10
Группа: Админы
Ранг: Старожил
Сообщений: 2003
Репутация: 751 ±
Замечаний: ±

Цитата (Serge_007)
Почему ты так решил?

Ативности почти нет, сильные формулисты (DV, kim) вообще прогуливают, ни вопросов от них, ни ответов
 
Ответить
Сообщение
Цитата (Serge_007)
Почему ты так решил?

Ативности почти нет, сильные формулисты (DV, kim) вообще прогуливают, ни вопросов от них, ни ответов

Автор - MCH
Дата добавления - 25.12.2012 в 07:40
Serge_007 Дата: Вторник, 25.12.2012, 10:10 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Миш, в инете не так много сильных формулистов
Из них kim, Johnson и _Boroda_ давно не появляются вообще нигде, DV и vikttur редко могут уделить хоть немного времени на решение задач (заходят на 5-10 минут), Zorro2005 адаптируется на новой работе
А остальные заняты больше семейными, предновогодними делами
Так что снижение активности вызвано объективными причинами, а не снижением интереса к этой ветке


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеМиш, в инете не так много сильных формулистов
Из них kim, Johnson и _Boroda_ давно не появляются вообще нигде, DV и vikttur редко могут уделить хоть немного времени на решение задач (заходят на 5-10 минут), Zorro2005 адаптируется на новой работе
А остальные заняты больше семейными, предновогодними делами
Так что снижение активности вызвано объективными причинами, а не снижением интереса к этой ветке

Автор - Serge_007
Дата добавления - 25.12.2012 в 10:10
Gustav Дата: Вторник, 25.12.2012, 10:52 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2748
Репутация: 1137 ±
Замечаний: 0% ±

начинал с Excel 4.0, видел 2.1
Тем временем я публикую наше общее решение на 65 знаков. Эта формула массива, которую надо ввести одновременно в 3 ячейки B1:D1 (предварительно выделив их) и завершить ввод Ctrl+Shift+Enter. Скрываю текст формулы под спойлером - вдруг всё-таки кто-то еще захочет подумать.



Как сможет заметить пытливый читатель форума, идеи темы "Текст по столбцам" живут и побеждают wink
http://www.excelworld.ru/forum/7-2804-30888-16-1353528478
К сообщению приложен файл: FIOin3cells.xls (23.5 Kb)


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Вторник, 25.12.2012, 11:11
 
Ответить
СообщениеТем временем я публикую наше общее решение на 65 знаков. Эта формула массива, которую надо ввести одновременно в 3 ячейки B1:D1 (предварительно выделив их) и завершить ввод Ctrl+Shift+Enter. Скрываю текст формулы под спойлером - вдруг всё-таки кто-то еще захочет подумать.



Как сможет заметить пытливый читатель форума, идеи темы "Текст по столбцам" живут и побеждают wink
http://www.excelworld.ru/forum/7-2804-30888-16-1353528478

Автор - Gustav
Дата добавления - 25.12.2012 в 10:52
vikttur Дата: Вторник, 25.12.2012, 19:31 | Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Да, за три в массиве - не догадался.
 
Ответить
СообщениеДа, за три в массиве - не догадался.

Автор - vikttur
Дата добавления - 25.12.2012 в 19:31
ZORRO2005 Дата: Четверг, 27.12.2012, 20:45 | Сообщение № 14
Группа: Друзья
Ранг: Обитатель
Сообщений: 382
Репутация: 148 ±
Замечаний: 0% ±

Excel2010
Цитата (Serge_007)
Так что снижение активности вызвано объективными причинами, а не снижением интереса к этой ветке

Это точно!
На праздники подкину несколько интересных на мой взгляд задачек.
 
Ответить
Сообщение
Цитата (Serge_007)
Так что снижение активности вызвано объективными причинами, а не снижением интереса к этой ветке

Это точно!
На праздники подкину несколько интересных на мой взгляд задачек.

Автор - ZORRO2005
Дата добавления - 27.12.2012 в 20:45
Татьяна Дата: Четверг, 09.01.2014, 02:24 | Сообщение № 15
Группа: Гости
Умные люди, подскажите. У меня каждые 3 недели отчет, в строке ФИО, адрес, телефон.... Но мне нужно показывать только ФИО, а остальную инфу вынуждена тысячами вручную удалять, КАК МОЖНО задать формулу, чтобы оставались только первые 3 слова в строке или ФИО? Бывает такое чудо??
Спасибо!
 
Ответить
СообщениеУмные люди, подскажите. У меня каждые 3 недели отчет, в строке ФИО, адрес, телефон.... Но мне нужно показывать только ФИО, а остальную инфу вынуждена тысячами вручную удалять, КАК МОЖНО задать формулу, чтобы оставались только первые 3 слова в строке или ФИО? Бывает такое чудо??
Спасибо!

Автор - Татьяна
Дата добавления - 09.01.2014 в 02:24
vikttur Дата: Четверг, 09.01.2014, 02:32 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Будет Вам чудо. Но в соответствующей ветке форума в соответствующей (Вашей) теме.
 
Ответить
СообщениеБудет Вам чудо. Но в соответствующей ветке форума в соответствующей (Вашей) теме.

Автор - vikttur
Дата добавления - 09.01.2014 в 02:32
Мир MS Excel » Работа и общение » Мозговой штурм » Разделение ФИО в три ячейки с помощью формул (Формулами! "Текст по столбцам" конкретно здесь не предлагать)
  • Страница 1 из 1
  • 1
Поиск:

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