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

Вход

Регистрация

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

 

= Мир MS Excel/Автоматическая подстановка окончаний - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Автоматическая подстановка окончаний
Dion Дата: Вторник, 25.04.2023, 22:19 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Добрый день!
У меня возникла необходимость, чтобы в зависимости от числа менялось окончание слова по правилам русского языка. Во вложении пример. Количество в ячейке E1, когда там

1, 21, 31... то должно быть "Отпуск 1 день"
2, 22, 23... то должно быть "Отпуск 2 дня"
5, 17, 28... то должно быть "Отпуск 5 дней"

Пробовал через функцию ПРАВ(E1;1) отрывать последнюю цифру, чтобы потом через ЕСЛИ составить условие, но почему-то не работает.
Подскажите, пожалуйста, где мой косяк.
К сообщению приложен файл: 11111.xls (8.0 Kb)
 
Ответить
СообщениеДобрый день!
У меня возникла необходимость, чтобы в зависимости от числа менялось окончание слова по правилам русского языка. Во вложении пример. Количество в ячейке E1, когда там

1, 21, 31... то должно быть "Отпуск 1 день"
2, 22, 23... то должно быть "Отпуск 2 дня"
5, 17, 28... то должно быть "Отпуск 5 дней"

Пробовал через функцию ПРАВ(E1;1) отрывать последнюю цифру, чтобы потом через ЕСЛИ составить условие, но почему-то не работает.
Подскажите, пожалуйста, где мой косяк.

Автор - Dion
Дата добавления - 25.04.2023 в 22:19
Gustav Дата: Среда, 26.04.2023, 00:12 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2793
Репутация: 1160 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Для вашей ячейки F1 примерно такую формулу можно соорудить:
Код
="Отпуск " & E1 & " " & ЕСЛИ(И(11<=ОСТАТ(E1;100); ОСТАТ(E1;100)<=19); "дней"; ВПР(ОСТАТ(E1;10); {0;"дней":1;"день":2;"дня":5;"дней"}; 2; 1))

В русском языке в пределах сотни всё идёт по кругу - используются три формы считаемого существительного: для кол-ва 1, для кол-ва 2 и для кол-ва 5. Исключение составляет диапазон "надцать" - от 11 до 19. Для него, а также для чисел, оканчивающихся на 0, используется форма для кол-ва 5. И это всё справедливо для любых считаемых сущностей: дней, ночей, рублей, копеек, километров, литров, штук и т.п.


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

Сообщение отредактировал Gustav - Среда, 26.04.2023, 00:28
 
Ответить
СообщениеДля вашей ячейки F1 примерно такую формулу можно соорудить:
Код
="Отпуск " & E1 & " " & ЕСЛИ(И(11<=ОСТАТ(E1;100); ОСТАТ(E1;100)<=19); "дней"; ВПР(ОСТАТ(E1;10); {0;"дней":1;"день":2;"дня":5;"дней"}; 2; 1))

В русском языке в пределах сотни всё идёт по кругу - используются три формы считаемого существительного: для кол-ва 1, для кол-ва 2 и для кол-ва 5. Исключение составляет диапазон "надцать" - от 11 до 19. Для него, а также для чисел, оканчивающихся на 0, используется форма для кол-ва 5. И это всё справедливо для любых считаемых сущностей: дней, ночей, рублей, копеек, километров, литров, штук и т.п.

Автор - Gustav
Дата добавления - 26.04.2023 в 00:12
Serge_007 Дата: Среда, 26.04.2023, 09:27 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
в зависимости от числа менялось окончание слова по правилам русского языка

Вычитание дат


Код
="Отпуск "&E1&" д"&ТЕКСТ(ОСТАТ(МАКС(ОСТАТ(E1-11;100);9);10);"[<1]ень;[<4]ня;ней")


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
в зависимости от числа менялось окончание слова по правилам русского языка

Вычитание дат


Код
="Отпуск "&E1&" д"&ТЕКСТ(ОСТАТ(МАКС(ОСТАТ(E1-11;100);9);10);"[<1]ень;[<4]ня;ней")

Автор - Serge_007
Дата добавления - 26.04.2023 в 09:27
Dion Дата: Среда, 26.04.2023, 09:40 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Большое спасибо, буду пробовать. Этими функциями никогда не пользовался раньше.
 
Ответить
СообщениеБольшое спасибо, буду пробовать. Этими функциями никогда не пользовался раньше.

Автор - Dion
Дата добавления - 26.04.2023 в 09:40
Dion Дата: Среда, 26.04.2023, 10:27 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Добавлю на случай, если вдруг кого-нибудь также накроет. Внутренняя упёртость не давала возможности спокойно работать, пока не пойму где я накосячил. Формула заработала в таком виде:

Код
=ЕСЛИ(M12=11;"дней";ЕСЛИ(M12=12;"дней";ЕСЛИ(M12=13;"дней";ЕСЛИ(M12=14;"дней";ЕСЛИ((ПРАВ(M12;1)+0)=1;"день";ЕСЛИ((ПРАВ(M12;1)+0)=2;"дня";ЕСЛИ((ПРАВ(M12;1)+0)=3;"дня";ЕСЛИ((ПРАВ(M12;1)+0)=4;"дня";"дней"))))))))


Проблема внезапно решилась добавлением +0, то есть ЕСЛИ((ПРАВ(M12;1)+0)=1
Очередной капкан Libre, не знаю почему иначе оторванная последняя цифра не воспринимается как число. Мой вариант формулы, конечно, длиннее и не такой грамотный, но работает.
 
Ответить
СообщениеДобавлю на случай, если вдруг кого-нибудь также накроет. Внутренняя упёртость не давала возможности спокойно работать, пока не пойму где я накосячил. Формула заработала в таком виде:

Код
=ЕСЛИ(M12=11;"дней";ЕСЛИ(M12=12;"дней";ЕСЛИ(M12=13;"дней";ЕСЛИ(M12=14;"дней";ЕСЛИ((ПРАВ(M12;1)+0)=1;"день";ЕСЛИ((ПРАВ(M12;1)+0)=2;"дня";ЕСЛИ((ПРАВ(M12;1)+0)=3;"дня";ЕСЛИ((ПРАВ(M12;1)+0)=4;"дня";"дней"))))))))


Проблема внезапно решилась добавлением +0, то есть ЕСЛИ((ПРАВ(M12;1)+0)=1
Очередной капкан Libre, не знаю почему иначе оторванная последняя цифра не воспринимается как число. Мой вариант формулы, конечно, длиннее и не такой грамотный, но работает.

Автор - Dion
Дата добавления - 26.04.2023 в 10:27
Serge_007 Дата: Среда, 26.04.2023, 11:26 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
мой вариант формулы, конечно, длиннее и не такой грамотный, но работает.
Работает, но некорректно
Попробуйте, например 111
Ваша формула вернет "день", а должно быть "дней"
А при 112 ваша формула вернет "дня", хотя должно быть "дней"

Выше я привел ссылку на статью с рабочей формулой, используйте её

капкан Libre, не знаю почему иначе оторванная последняя цифра не воспринимается как число
Libre здесь ни при чем, так устроены все редакторы электронных таблиц
Функция
Код
=RIGHT()
- текстовая и возвращает текстовую строку
Что бы преобразовать текст в число необходимо произвести с ним любое математическое действие
Подробнее читайте в этой статье:
Что такое -- или как превратить ИСТИНА в 1, а ЛОЖЬ в 0?

[p.s.] Dion, почему Вы разместили эту тему в разделе по Google Docs, если у Вас вопрос по Libre Office?


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
мой вариант формулы, конечно, длиннее и не такой грамотный, но работает.
Работает, но некорректно
Попробуйте, например 111
Ваша формула вернет "день", а должно быть "дней"
А при 112 ваша формула вернет "дня", хотя должно быть "дней"

Выше я привел ссылку на статью с рабочей формулой, используйте её

капкан Libre, не знаю почему иначе оторванная последняя цифра не воспринимается как число
Libre здесь ни при чем, так устроены все редакторы электронных таблиц
Функция
Код
=RIGHT()
- текстовая и возвращает текстовую строку
Что бы преобразовать текст в число необходимо произвести с ним любое математическое действие
Подробнее читайте в этой статье:
Что такое -- или как превратить ИСТИНА в 1, а ЛОЖЬ в 0?

[p.s.] Dion, почему Вы разместили эту тему в разделе по Google Docs, если у Вас вопрос по Libre Office?

Автор - Serge_007
Дата добавления - 26.04.2023 в 11:26
Dion Дата: Среда, 26.04.2023, 13:55 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 110
Репутация: 0 ±
Замечаний: 20% ±

Excel 2016
Работает, но некорректно

Спасибо за замечание, так далеко не заглядывал, у нас не бывает таких длинных отпусков.

я привел ссылку на статью с рабочей формулой

Да, я посмотрел, но там две даты, а у меня одна ячейка. Пока думал как приспособить под свои задачи сделал "колхозным способом"

почему разместили тему в разделе

Невнимательность, извините, не увидел Libre в списке и не туда ткнул.


Сообщение отредактировал Dion - Среда, 26.04.2023, 13:56
 
Ответить
Сообщение
Работает, но некорректно

Спасибо за замечание, так далеко не заглядывал, у нас не бывает таких длинных отпусков.

я привел ссылку на статью с рабочей формулой

Да, я посмотрел, но там две даты, а у меня одна ячейка. Пока думал как приспособить под свои задачи сделал "колхозным способом"

почему разместили тему в разделе

Невнимательность, извините, не увидел Libre в списке и не туда ткнул.

Автор - Dion
Дата добавления - 26.04.2023 в 13:55
Serge_007 Дата: Среда, 26.04.2023, 14:06 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
у нас не бывает таких длинных отпусков
Тут ведь дело не в отпусках, а в алгоритме, который Вы запросили в названии темы: Автоматическая подстановка окончаний
Именно по этому заголовку будет находится тема в поисковой выдаче
Про отпуска в названии - ни слова

там две даты, а у меня одна ячейка
И в чем принципиальная разница?!
Сложно заменить в формуле А1-В1 на А1?
Более того, я уже сделал это за Вас здесь

не увидел Libre в списке
Libre в списке нет
Но есть Open Office
Libre относится к категории открытого офисного ПО, поэтому темы по данной программе надо создавать в этом разделе


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
у нас не бывает таких длинных отпусков
Тут ведь дело не в отпусках, а в алгоритме, который Вы запросили в названии темы: Автоматическая подстановка окончаний
Именно по этому заголовку будет находится тема в поисковой выдаче
Про отпуска в названии - ни слова

там две даты, а у меня одна ячейка
И в чем принципиальная разница?!
Сложно заменить в формуле А1-В1 на А1?
Более того, я уже сделал это за Вас здесь

не увидел Libre в списке
Libre в списке нет
Но есть Open Office
Libre относится к категории открытого офисного ПО, поэтому темы по данной программе надо создавать в этом разделе

Автор - Serge_007
Дата добавления - 26.04.2023 в 14:06
  • Страница 1 из 1
  • 1
Поиск:

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