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

Вход

Регистрация

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

 

= Мир MS Excel/Склонение слова "день" в зависимости от количества - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Склонение слова "день" в зависимости от количества (Формулы/Formulas)
Склонение слова "день" в зависимости от количества
vitos88 Дата: Вторник, 01.10.2019, 09:14 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 5 ±
Замечаний: 0% ±

Добрый день! Написал формулу, склоняющую слово "день" в зависимости от их количества:
Код
=ЕСЛИ(И(A1>100;ОСТАТ(A1;100)>10;ОСТАТ(A1;100)<21);"дней";ЕСЛИ(ОСТАТ(A1;10)=0;"дней";ЕСЛИ(ОСТАТ(A1;10)>4;"дней";ЕСЛИ(И(A1>9;A1<15);"дней";ЕСЛИ(ОСТАТ(A1;10)=1;"день";"дня")))))

Знаю, что есть варианты намного изящней и короче. Кто хочет поразмять мозги?
К сообщению приложен файл: 2335389.xlsx(56.1 Kb)
 
Ответить
СообщениеДобрый день! Написал формулу, склоняющую слово "день" в зависимости от их количества:
Код
=ЕСЛИ(И(A1>100;ОСТАТ(A1;100)>10;ОСТАТ(A1;100)<21);"дней";ЕСЛИ(ОСТАТ(A1;10)=0;"дней";ЕСЛИ(ОСТАТ(A1;10)>4;"дней";ЕСЛИ(И(A1>9;A1<15);"дней";ЕСЛИ(ОСТАТ(A1;10)=1;"день";"дня")))))

Знаю, что есть варианты намного изящней и короче. Кто хочет поразмять мозги?

Автор - vitos88
Дата добавления - 01.10.2019 в 09:14
bmv98rus Дата: Вторник, 01.10.2019, 09:40 | Сообщение № 2
Группа: Проверенные
Ранг: Участник клуба
Сообщений: 2627
Репутация: 451 ±
Замечаний: 0% ±

Excel 2013/2016
ну например
Код
=INDEX({"дней";"день";"дня"};IF(AND(MOD(A1;100)>4;mod(A1;100)<21);1;LOOKUP(--RIGHT(A1;1);{0;1;2;5};{1;2;3;1})))

Код
=INDEX({"дней";"день";"дня"};IF(ABS(MOD(A1;100)-10)<5;1;LOOKUP(--RIGHT(A1;1);{0;1;2;5};{1;2;3;1})))
или на тех же принципах
Код
=CHOOSE(IF(AND(MOD(A1;100)>4;MOD(A1;100)<21);1;LOOKUP(--RIGHT(A1;1);{0;1;2;5};{1;2;3;1}));"дней";"день";"дня")

Код
=CHOOSE(IF(ABS(MOD(A1;100)-10)<5;1;LOOKUP(--RIGHT(A1;1);{0;1;2;5};{1;2;3;1}));"дней";"день";"дня")


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 01.10.2019, 11:23
 
Ответить
Сообщениену например
Код
=INDEX({"дней";"день";"дня"};IF(AND(MOD(A1;100)>4;mod(A1;100)<21);1;LOOKUP(--RIGHT(A1;1);{0;1;2;5};{1;2;3;1})))

Код
=INDEX({"дней";"день";"дня"};IF(ABS(MOD(A1;100)-10)<5;1;LOOKUP(--RIGHT(A1;1);{0;1;2;5};{1;2;3;1})))
или на тех же принципах
Код
=CHOOSE(IF(AND(MOD(A1;100)>4;MOD(A1;100)<21);1;LOOKUP(--RIGHT(A1;1);{0;1;2;5};{1;2;3;1}));"дней";"день";"дня")

Код
=CHOOSE(IF(ABS(MOD(A1;100)-10)<5;1;LOOKUP(--RIGHT(A1;1);{0;1;2;5};{1;2;3;1}));"дней";"день";"дня")

Автор - bmv98rus
Дата добавления - 01.10.2019 в 09:40
vitos88 Дата: Вторник, 01.10.2019, 10:20 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 5 ±
Замечаний: 0% ±

bmv98rus, ни одна из ваших формул не подходит под случаи 11, 12, 13 и 14 после каждой сотни :p
 
Ответить
Сообщениеbmv98rus, ни одна из ваших формул не подходит под случаи 11, 12, 13 и 14 после каждой сотни :p

Автор - vitos88
Дата добавления - 01.10.2019 в 10:20
bmv98rus Дата: Вторник, 01.10.2019, 10:41 | Сообщение № 4
Группа: Проверенные
Ранг: Участник клуба
Сообщений: 2627
Репутация: 451 ±
Замечаний: 0% ±

Excel 2013/2016
после каждой сотни
ну так и правятся все одним махом просто.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
после каждой сотни
ну так и правятся все одним махом просто.

Автор - bmv98rus
Дата добавления - 01.10.2019 в 10:41
DrMini Дата: Вторник, 01.10.2019, 10:45 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 387
Репутация: 4 ±
Замечаний: 0% ±

Excel 2010, 2013
Мне пару месяцев назад нужно было то же самое. Нашёл где то на просторах Internet`a. Помню только автор ВЛАДИМИР
Код
=ВЫБОР(МАКС(--(--(ПРАВСИМВ(A1;2))={11;12;13;14}))+МАКС(--(--(ПРАВСИМВ(A1;1))={1;21;31:2;3;4})*{1:3})+1;"лет";"год";"лет";"года";"лет")

Может подойдёт?


Сообщение отредактировал DrMini - Вторник, 01.10.2019, 10:46
 
Ответить
СообщениеМне пару месяцев назад нужно было то же самое. Нашёл где то на просторах Internet`a. Помню только автор ВЛАДИМИР
Код
=ВЫБОР(МАКС(--(--(ПРАВСИМВ(A1;2))={11;12;13;14}))+МАКС(--(--(ПРАВСИМВ(A1;1))={1;21;31:2;3;4})*{1:3})+1;"лет";"год";"лет";"года";"лет")

Может подойдёт?

Автор - DrMini
Дата добавления - 01.10.2019 в 10:45
vitos88 Дата: Вторник, 01.10.2019, 11:18 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 5 ±
Замечаний: 0% ±

bmv98rus, теперь формулы (конкретно у меня, пользуюсь офисом 2013) вообще не работают.
DrMini, а вот ваша формула работает отлично, ошибок пока не выявил.
К сообщению приложен файл: 0067110.xlsx(21.1 Kb)


Сообщение отредактировал vitos88 - Вторник, 01.10.2019, 11:18
 
Ответить
Сообщениеbmv98rus, теперь формулы (конкретно у меня, пользуюсь офисом 2013) вообще не работают.
DrMini, а вот ваша формула работает отлично, ошибок пока не выявил.

Автор - vitos88
Дата добавления - 01.10.2019 в 11:18
bmv98rus Дата: Вторник, 01.10.2019, 11:22 | Сообщение № 7
Группа: Проверенные
Ранг: Участник клуба
Сообщений: 2627
Репутация: 451 ±
Замечаний: 0% ±

Excel 2013/2016
ользуюсь офисом 2013
плохо пользуетесь значит. У меня тоже 2013, просто MOD писал прямо в сообщении и прописными и он не перевелся, а вы вставляя не перевели в ОСТАТ.
К сообщению приложен файл: Copy_of_1164.xlsx(34.2 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 01.10.2019, 11:24
 
Ответить
Сообщение
ользуюсь офисом 2013
плохо пользуетесь значит. У меня тоже 2013, просто MOD писал прямо в сообщении и прописными и он не перевелся, а вы вставляя не перевели в ОСТАТ.

Автор - bmv98rus
Дата добавления - 01.10.2019 в 11:22
DrMini Дата: Вторник, 01.10.2019, 11:26 | Сообщение № 8
Группа: Проверенные
Ранг: Обитатель
Сообщений: 387
Репутация: 4 ±
Замечаний: 0% ±

Excel 2010, 2013
Добавка для удаления ошибки при пустом значении:
Код
=ЕСЛИОШИБКА(ВЫБОР(МАКС(--(--(ПРАВСИМВ(A1;2))={11;12;13;14}))+МАКС(--(--(ПРАВСИМВ(A1;1))={1;21;31:2;3;4})*{1:3})+1;"лет";"год";"лет";"года";"лет");"Любое значение")
К сообщению приложен файл: ___.xlsx(8.1 Kb)
 
Ответить
СообщениеДобавка для удаления ошибки при пустом значении:
Код
=ЕСЛИОШИБКА(ВЫБОР(МАКС(--(--(ПРАВСИМВ(A1;2))={11;12;13;14}))+МАКС(--(--(ПРАВСИМВ(A1;1))={1;21;31:2;3;4})*{1:3})+1;"лет";"год";"лет";"года";"лет");"Любое значение")

Автор - DrMini
Дата добавления - 01.10.2019 в 11:26
vitos88 Дата: Вторник, 01.10.2019, 11:56 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 5 ±
Замечаний: 0% ±

[offtop]
плохо пользуетесь

да не говорите! с логикой у меня проблемы, это известный факт yes
 
Ответить
Сообщение[offtop]
плохо пользуетесь

да не говорите! с логикой у меня проблемы, это известный факт yes

Автор - vitos88
Дата добавления - 01.10.2019 в 11:56
Светлый Дата: Вторник, 01.10.2019, 14:58 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1299
Репутация: 325 ±
Замечаний: 0% ±

Excel 2010
И я свои пять копеек с защитой от пустой выложу:
Код
=ПРОСМОТР((ЛЕВБ(ПРАВБ(0&A1;2))<>"1")*ПРАВБ(0&A1);{0;1;2;5};{"дней";"день";"дня";"дней"})
*А такая даже тексты будет игнорировать:
Код
=ПРОСМОТР((ЛЕВБ(ПРАВБ(0&A1;2))<>"1")*ПРАВБ(Ч(A1));{0;1;2;5};{"дней";"день";"дня";"дней"})


Программировать проще, чем писать стихи.

Сообщение отредактировал Светлый - Вторник, 01.10.2019, 15:33
 
Ответить
СообщениеИ я свои пять копеек с защитой от пустой выложу:
Код
=ПРОСМОТР((ЛЕВБ(ПРАВБ(0&A1;2))<>"1")*ПРАВБ(0&A1);{0;1;2;5};{"дней";"день";"дня";"дней"})
*А такая даже тексты будет игнорировать:
Код
=ПРОСМОТР((ЛЕВБ(ПРАВБ(0&A1;2))<>"1")*ПРАВБ(Ч(A1));{0;1;2;5};{"дней";"день";"дня";"дней"})

Автор - Светлый
Дата добавления - 01.10.2019 в 14:58
vitos88 Дата: Вторник, 01.10.2019, 16:03 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 5 ±
Замечаний: 0% ±

Светлый, пожалуй, у вас самая изящная формула! respect
 
Ответить
СообщениеСветлый, пожалуй, у вас самая изящная формула! respect

Автор - vitos88
Дата добавления - 01.10.2019 в 16:03
bmv98rus Дата: Вторник, 01.10.2019, 17:09 | Сообщение № 12
Группа: Проверенные
Ранг: Участник клуба
Сообщений: 2627
Репутация: 451 ±
Замечаний: 0% ±

Excel 2013/2016
Не люблю повторять текст, но получается короче, паразитирую на №10
Код
=LOOKUP((ABS(MOD(A1;100)-10)>5)*MOD(A1;10);{0;1;2;5};{"дней";"день";"дня";"дней"})


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 01.10.2019, 17:12
 
Ответить
СообщениеНе люблю повторять текст, но получается короче, паразитирую на №10
Код
=LOOKUP((ABS(MOD(A1;100)-10)>5)*MOD(A1;10);{0;1;2;5};{"дней";"день";"дня";"дней"})

Автор - bmv98rus
Дата добавления - 01.10.2019 в 17:09
MCH Дата: Вторник, 01.10.2019, 22:39 | Сообщение № 13
Группа: Админы
Ранг: Старожил
Сообщений: 1921
Репутация: 720 ±
Замечаний: ±

Кто хочет поразмять мозги?

Код
=ВПР(ОСТАТ(МАКС(ОСТАТ(A1-11;100);9);10);{0;"день":1;"дня":4;"дней"};2)

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

http://www.excelworld.ru/forum/2-9059-1
 
Ответить
Сообщение
Кто хочет поразмять мозги?

Код
=ВПР(ОСТАТ(МАКС(ОСТАТ(A1-11;100);9);10);{0;"день":1;"дня":4;"дней"};2)

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

http://www.excelworld.ru/forum/2-9059-1

Автор - MCH
Дата добавления - 01.10.2019 в 22:39
bmv98rus Дата: Вторник, 01.10.2019, 23:04 | Сообщение № 14
Группа: Проверенные
Ранг: Участник клуба
Сообщений: 2627
Репутация: 451 ±
Замечаний: 0% ±

Excel 2013/2016
MOD(MAX(MOD(A1-11,100),9),10){
Отличный вариант. что-то подобное делал с кодами символов, но тут забыл напрочь.
+


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
MOD(MAX(MOD(A1-11,100),9),10){
Отличный вариант. что-то подобное делал с кодами символов, но тут забыл напрочь.
+

Автор - bmv98rus
Дата добавления - 01.10.2019 в 23:04
Светлый Дата: Среда, 02.10.2019, 00:12 | Сообщение № 15
Группа: Друзья
Ранг: Старожил
Сообщений: 1299
Репутация: 325 ±
Замечаний: 0% ±

Excel 2010
MCH, круто! Ещё один из ОСТАТ можно заменить.
Код
="д"&ТЕКСТ(ПРАВБ(МАКС(ОСТАТ(A1-11;100);9));"[<1]ень;[<4]ня;ней")


Программировать проще, чем писать стихи.
 
Ответить
СообщениеMCH, круто! Ещё один из ОСТАТ можно заменить.
Код
="д"&ТЕКСТ(ПРАВБ(МАКС(ОСТАТ(A1-11;100);9));"[<1]ень;[<4]ня;ней")

Автор - Светлый
Дата добавления - 02.10.2019 в 00:12
MCH Дата: Четверг, 03.10.2019, 21:56 | Сообщение № 16
Группа: Админы
Ранг: Старожил
Сообщений: 1921
Репутация: 720 ±
Замечаний: ±

Как всегда, пришел Светлый и все улучшил
 
Ответить
СообщениеКак всегда, пришел Светлый и все улучшил

Автор - MCH
Дата добавления - 03.10.2019 в 21:56
bmv98rus Дата: Четверг, 03.10.2019, 22:14 | Сообщение № 17
Группа: Проверенные
Ранг: Участник клуба
Сообщений: 2627
Репутация: 451 ±
Замечаний: 0% ±

Excel 2013/2016
и все улучшил

Укоротил не всегда = улучшил. Краткость не всегда скорость и легкость вычислений.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
Сообщение
и все улучшил

Укоротил не всегда = улучшил. Краткость не всегда скорость и легкость вычислений.

Автор - bmv98rus
Дата добавления - 03.10.2019 в 22:14
MCH Дата: Пятница, 04.10.2019, 12:48 | Сообщение № 18
Группа: Админы
Ранг: Старожил
Сообщений: 1921
Репутация: 720 ±
Замечаний: ±

Укоротил не всегда = улучшил

Разумеется, и я в своих формулах предпочитаю работать с числами, а не с текстом в подобных ситуациях, т.к. операции с текстом, как правило, медленнее операций с числами.
Но было предложено:
Знаю, что есть варианты намного изящней и короче. Кто хочет поразмять мозги?

Просили более короткую формулу, которая не обязательно эффективнее.
 
Ответить
Сообщение
Укоротил не всегда = улучшил

Разумеется, и я в своих формулах предпочитаю работать с числами, а не с текстом в подобных ситуациях, т.к. операции с текстом, как правило, медленнее операций с числами.
Но было предложено:
Знаю, что есть варианты намного изящней и короче. Кто хочет поразмять мозги?

Просили более короткую формулу, которая не обязательно эффективнее.

Автор - MCH
Дата добавления - 04.10.2019 в 12:48
bmv98rus Дата: Пятница, 04.10.2019, 12:58 | Сообщение № 19
Группа: Проверенные
Ранг: Участник клуба
Сообщений: 2627
Репутация: 451 ±
Замечаний: 0% ±

Excel 2013/2016
MCH, Тезка, то что изящно это A1-11 и [<1]ень;[<4]ня;ней , и я и Светлый, это отметили . Ну а в целом, мне кажется мы поняли друг друга по поводу вычислений.


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеMCH, Тезка, то что изящно это A1-11 и [<1]ень;[<4]ня;ней , и я и Светлый, это отметили . Ну а в целом, мне кажется мы поняли друг друга по поводу вычислений.

Автор - bmv98rus
Дата добавления - 04.10.2019 в 12:58
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Склонение слова "день" в зависимости от количества (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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