Страницы: 1
RSS
Слово "день", если их несколько: день, дня, дней
 
всем привет и всех с праздником!
подозреваю, что уже есть готовая формулв эксель позволяющая просклонять слово "день"
, ну то есть
1 - день
2 - дня
3 - дня
....................
10 - дней
и т.д. - для любой цифры которая указана в ячейке, то есть и для 1256 (дней) в том числе (конечно 1256 просто пример, а вообще любое число дней)
:)
 
спешу добавить, что честно пытался искать, но ни в яндексе, ни в гугле ни на форуме запрос "формулой excel просклонять слово день дня дней" не привел к нужной формуле (
 
Код
Function DayTxt(ByVal iDay) As String
  If IsNumeric(iDay) Then
  d = iDay
    iDay = Int(iDay) Mod 100
     If (11 <= iDay) And (iDay <= 19) Then
      DayTxt = d & " дней"
    Else
      Select Case iDay Mod 10
        Case 1
          DayTxt = d & " день"
        Case 2, 3, 4
          DayTxt = d & " дня"
        Case 0, 5, 6, 7, 8, 9
          DayTxt = d & " дней"
      End Select
    End If
  End If
End Function
Изменено: R Dmitry - 01.05.2013 12:12:42
Спасибо
 
спасибо, но не совсем то, во первых это максрос, а во вторых (даже при моем слабом знании макросов) он, например, для 112 вернет "день", а правельно "дней"
 
Код
=ЕСЛИ(--ПРАВСИМВ(A1;1)=1;"день";ЕСЛИ(И(--ПРАВСИМВ(A1;1)>1;--ПРАВСИМВ(A1;1)<5);"дня";ЕСЛИ(ИЛИ(--ПРАВСИМВ(A1;1)=0;--ПРАВСИМВ(A1;1)>4);"дней")))
Согласие есть продукт при полном непротивлении сторон
 
Опа! мой вариант без учета второго десятка
Согласие есть продукт при полном непротивлении сторон
 
Код
="д"&ЕСЛИ(И(ДЛСТР(A1)>1;--ПРАВСИМВ(A1;2)>=10;--ПРАВСИМВ(A1;2)<=19);"ней";ПРОСМОТР(--ПРАВСИМВ(A1;1);{0;1;2;5};{"ней";"ень";"ня";"ней"}))
 
Цитата
Zhukov_K пишет:
спасибо, но не совсем то, во первых это максрос, а во вторых (даже при моем слабом знании макросов) он, например, для 112 вернет "день", а правельно "дней"
Исправил,
ну и чего Вы так макросов боитесь :))
Изменено: R Dmitry - 01.05.2013 12:14:58
Спасибо
 
я их не боюсь, но человек, которому будет отправляться файл, всегда отключает макросы.. (((
 
V, похоже, что формула делает то что надо! сейчас буду проверять на реальных данных! )
 
Код
=ВЫБОР((ОСТАТ(A1-5;100)>15)+1;"дней";ПРОСМОТР(ОСТАТ(A1-1;10);{0;1;4};{"день";"дня";"дней"}))
 
Код
=ЕСЛИ(ИЛИ(И(--ПРАВСИМВ(A1;2)>10;--ПРАВСИМВ(A1;2)<20);И(--ПРАВСИМВ(A1;1)>4;--ПРАВСИМВ(A1;1)<=9);--ПРАВСИМВ(A1;1)=0);"дней";ЕСЛИ(И(--ПРАВСИМВ(A1;1)>1;--ПРАВСИМВ(A1;1)<5);"дня";ЕСЛИ(--ПРАВСИМВ(A1;1)=1;"день")))
Согласие есть продукт при полном непротивлении сторон
 
А если формуле ПРАВСИМВ(A1;1) присвоить имя ПС1, а формуле ПРАВСИМВ(A1;2) - имя ПС2 то формула сократиться:
Код
=ЕСЛИ(ИЛИ(И(--ПС2>10;--ПС2<20);И(--ПС1>4;--ПС1<=9);--ПС1=0);"дней";ЕСЛИ(И(--ПС1>1;--ПС1<5);"дня";ЕСЛИ(--ПС1=1;"день")))
Согласие есть продукт при полном непротивлении сторон
 
И двойное отрицание ("--") можно в имя добавить
Код
=ЕСЛИ(ИЛИ(И(ПС2>10;ПС2<20);И(ПС1>4;ПС1<=9);ПС1=0);"дней";ЕСЛИ(И(ПС1>1;ПС1<5);"дня";ЕСЛИ(ПС1=1;"день")))
Согласие есть продукт при полном непротивлении сторон
 
Михаил С., ну и ну!
а можете хотя бы немного рассказать какие принципы использованы в этой формуле? как она работает?
 
А так
Код
=если(ОСТАТ(A1-5;100)>15;ПРОСМОТР(ОСТАТ(A1-1;10);{0;1;4};{"день";"дня";"дней"});"дней") 
не более ясно? в принципе, та же самая формула. записанная чуть по-другому.
надеюсь, из файла будет понятно
 
Вариант
Excel 2013
 
Код
=ВПР(ОСТАТ(МАКС(ОСТАТ(A1-11;100);9);10);{0;"день":1;"дня":4;"дней"};2)

Код
="д"&ТЕКСТ(ОСТАТ(МАКС(ОСТАТ(A1-11;100);9);10);"[<1]ень;[<4]ня;ней")
 
Я предлагаю такую формулу.
=IF(RIGHT(A1;2)*1>21;VLOOKUP(RIGHT(A1;1)*1;день;2);VLOOKUP(RIGHT(A1;2)*1;день;2))
Страницы: 1
Читают тему
Наверх