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

Вход

Регистрация

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

 

= Мир MS Excel/Зависимость двух переменных от одного значения - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Зависимость двух переменных от одного значения
Мурад Дата: Среда, 11.02.2015, 16:56 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Добрый день! Ковыряюсь со склонениями слов "Осталось" и "день"
Итак, осталось N "дней", или "дня" или "день"? Значение числа N находится в ячейке A1.
Функцией
Код
Остат(A1;10)

выдергиваем последнюю цифру, далее условие Если:
0;5;6;7;8;9 - "Осталось" N "дней"
1 - "Остался" N "день"
2;3;4 - "Осталось" N "дня"
Данная формула считает неверно:
Код
=если(Остат(A1;10)=или(0;5;6;7;8;9);"Осталось "&A1&" дней";если(Остат(A1;10)=1;"Остался "&A1&" день";"Осталось "&A1&" дня"))

Понимаю, что можно было вас не беспокоить, создав таблицу соответствия на скрытном листе, но здесь функция ВПР() не поможет, т.к. используется вариации двух зависимых переменных от одного значения. Конечно же, это всего лишь утверждение чайника))
 
Ответить
СообщениеДобрый день! Ковыряюсь со склонениями слов "Осталось" и "день"
Итак, осталось N "дней", или "дня" или "день"? Значение числа N находится в ячейке A1.
Функцией
Код
Остат(A1;10)

выдергиваем последнюю цифру, далее условие Если:
0;5;6;7;8;9 - "Осталось" N "дней"
1 - "Остался" N "день"
2;3;4 - "Осталось" N "дня"
Данная формула считает неверно:
Код
=если(Остат(A1;10)=или(0;5;6;7;8;9);"Осталось "&A1&" дней";если(Остат(A1;10)=1;"Остался "&A1&" день";"Осталось "&A1&" дня"))

Понимаю, что можно было вас не беспокоить, создав таблицу соответствия на скрытном листе, но здесь функция ВПР() не поможет, т.к. используется вариации двух зависимых переменных от одного значения. Конечно же, это всего лишь утверждение чайника))

Автор - Мурад
Дата добавления - 11.02.2015 в 16:56
_Boroda_ Дата: Среда, 11.02.2015, 17:07 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16912
Репутация: 6616 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
А если в А1 число 12? Получится Осталось 12 дня?
Посмотрите здесь


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА если в А1 число 12? Получится Осталось 12 дня?
Посмотрите здесь

Автор - _Boroda_
Дата добавления - 11.02.2015 в 17:07
Pelena Дата: Среда, 11.02.2015, 17:11 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19521
Репутация: 4634 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Решение от MCH
http://www.excelworld.ru/forum/3-7287-69885-16-1384520795


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Решение от MCH
http://www.excelworld.ru/forum/3-7287-69885-16-1384520795

Автор - Pelena
Дата добавления - 11.02.2015 в 17:11
Nic70y Дата: Среда, 11.02.2015, 17:14 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 9140
Репутация: 2416 ±
Замечаний: 0% ±

Excel 2010
Код
=ЕСЛИ(И(--ПРАВБ(A1;2)>10;--ПРАВБ(A1;2)<20);"дней";ЕСЛИ(ЕЧИСЛО(ПОИСК(ПРАВБ(A1);234));"дня";ЕСЛИ(--ПРАВБ(A1)=1;"день";"дней")))
такой вариант
точнее так
Код
=ЕСЛИ(И(--ПРАВБ(A1;2)>10;--ПРАВБ(A1;2)<20);"Осталось "&A1&" дней";ЕСЛИ(ЕЧИСЛО(ПОИСК(ПРАВБ(A1);234));"Осталось "&A1&" дня";ЕСЛИ(--ПРАВБ(A1)=1;"Остался "&A1&" день";"Осталось "&A1&" дней")))


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Среда, 11.02.2015, 17:18
 
Ответить
Сообщение
Код
=ЕСЛИ(И(--ПРАВБ(A1;2)>10;--ПРАВБ(A1;2)<20);"дней";ЕСЛИ(ЕЧИСЛО(ПОИСК(ПРАВБ(A1);234));"дня";ЕСЛИ(--ПРАВБ(A1)=1;"день";"дней")))
такой вариант
точнее так
Код
=ЕСЛИ(И(--ПРАВБ(A1;2)>10;--ПРАВБ(A1;2)<20);"Осталось "&A1&" дней";ЕСЛИ(ЕЧИСЛО(ПОИСК(ПРАВБ(A1);234));"Осталось "&A1&" дня";ЕСЛИ(--ПРАВБ(A1)=1;"Остался "&A1&" день";"Осталось "&A1&" дней")))

Автор - Nic70y
Дата добавления - 11.02.2015 в 17:14
Мурад Дата: Среда, 11.02.2015, 17:23 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
А слово "Осталось" куда дели?))
Я использую эту формулу в реестре задач на месяц. Для напоминания об оставшемся времени до начала мероприятия. Хотелось бы сохранить слово "Осталось". Понравилось у MCH, что он укорачивает формулу, используя только окончания рассматриваемых слов.
ось N ней
ся N ень
ось N ня
Ошибка в моем варианте, мне кажется, кроется в этой части формулы:
Код
Остат(A1;10)=или(0;5;6;7;8;9)
. Это условие всегда оказывается неверным. М.б. потому что я пытаюсь сравнить число с текстом?
Или я неправильно сравниваю результат функции Остат с массивом элементов?


Сообщение отредактировал Мурад - Среда, 11.02.2015, 17:24
 
Ответить
СообщениеА слово "Осталось" куда дели?))
Я использую эту формулу в реестре задач на месяц. Для напоминания об оставшемся времени до начала мероприятия. Хотелось бы сохранить слово "Осталось". Понравилось у MCH, что он укорачивает формулу, используя только окончания рассматриваемых слов.
ось N ней
ся N ень
ось N ня
Ошибка в моем варианте, мне кажется, кроется в этой части формулы:
Код
Остат(A1;10)=или(0;5;6;7;8;9)
. Это условие всегда оказывается неверным. М.б. потому что я пытаюсь сравнить число с текстом?
Или я неправильно сравниваю результат функции Остат с массивом элементов?

Автор - Мурад
Дата добавления - 11.02.2015 в 17:23
Мурад Дата: Среда, 11.02.2015, 17:36 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Спасибо всем! Особенно Нику. Формула работает, я так понимаю, используя кодировку ASCII или как ее там. Если у вас есть возможность, объясните, почему в моем варианте первое условие не срабатывает? Может скобки не так поставил...
 
Ответить
СообщениеСпасибо всем! Особенно Нику. Формула работает, я так понимаю, используя кодировку ASCII или как ее там. Если у вас есть возможность, объясните, почему в моем варианте первое условие не срабатывает? Может скобки не так поставил...

Автор - Мурад
Дата добавления - 11.02.2015 в 17:36
Pelena Дата: Среда, 11.02.2015, 17:42 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 19521
Репутация: 4634 ±
Замечаний: ±

Excel 365 & Mac Excel
почему в моем варианте первое условие не срабатывает?

Надо примерно так
Код
ИЛИ(ОСТАТ(A19;10)={0;5;6;7;8;9})


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
почему в моем варианте первое условие не срабатывает?

Надо примерно так
Код
ИЛИ(ОСТАТ(A19;10)={0;5;6;7;8;9})

Автор - Pelena
Дата добавления - 11.02.2015 в 17:42
Nic70y Дата: Среда, 11.02.2015, 17:43 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 9140
Репутация: 2416 ±
Замечаний: 0% ±

Excel 2010
Код
=ЕЧИСЛО(ПОИСК(ОСТАТ(A1;10);"0.5.6.7.8.9"))
=или(0;5;6;7;8;9)
в принципе не может работать
Код
=ИЛИ(Остат(A1;10)=0;Остат(A1;10)=5;
и т.д. в любом случае есть такие числа как 11;12 - 19 которые выходят из общего правила, о чем и писал _Boroda_
А если в А1 число 12? Получится Осталось 12 дня?


ЮMoney 41001841029809
 
Ответить
Сообщение
Код
=ЕЧИСЛО(ПОИСК(ОСТАТ(A1;10);"0.5.6.7.8.9"))
=или(0;5;6;7;8;9)
в принципе не может работать
Код
=ИЛИ(Остат(A1;10)=0;Остат(A1;10)=5;
и т.д. в любом случае есть такие числа как 11;12 - 19 которые выходят из общего правила, о чем и писал _Boroda_
А если в А1 число 12? Получится Осталось 12 дня?

Автор - Nic70y
Дата добавления - 11.02.2015 в 17:43
Мурад Дата: Среда, 11.02.2015, 17:54 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
Доделал))
Код
=ЕСЛИ(ИЛИ(ОСТАТ(A1;10)={0;5;6;7;8;9};ОСТАТ(A1;100)={11;12;13;14});"Осталось "&A1&" дней";ЕСЛИ(ОСТАТ(A1;10)=1;"Остался "&A1&" день";"Осталось "&A1&" дня"))
 
Ответить
СообщениеДоделал))
Код
=ЕСЛИ(ИЛИ(ОСТАТ(A1;10)={0;5;6;7;8;9};ОСТАТ(A1;100)={11;12;13;14});"Осталось "&A1&" дней";ЕСЛИ(ОСТАТ(A1;10)=1;"Остался "&A1&" день";"Осталось "&A1&" дня"))

Автор - Мурад
Дата добавления - 11.02.2015 в 17:54
Мурад Дата: Среда, 11.02.2015, 17:55 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 513
Репутация: 18 ±
Замечаний: 0% ±

Excel 2007
из общего правила выходят только 4 числа: 11, 12, 13, 14. Добавил в проверку 1го условия
 
Ответить
Сообщениеиз общего правила выходят только 4 числа: 11, 12, 13, 14. Добавил в проверку 1го условия

Автор - Мурад
Дата добавления - 11.02.2015 в 17:55
МВТ Дата: Среда, 11.02.2015, 18:54 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 476
Репутация: 137 ±
Замечаний: 0% ±

Excel 2007
Если не побрезгуете UDF, то вот, когда-то писал для похожей ситуации
[vba]
Код
Function ИнтервалВремени(Интервал As Long, Optional Ед_Времени As String, Optional Прописные As Boolean)
     Dim I As Integer, D As String
     I = Интервал Mod 100
     If I > 20 Then I = I Mod 10
     Ед_Времени = UCase(Ед_Времени)
     S = ""
     If Ед_Времени = "" Then Ед_Времени = "Д"
     Select Case Ед_Времени
         Case "Д"
         If I = 1 Then S = " день" Else If (I >= 2 And I < 5) Then S = " дня" Else: S = " дней"
         Case "Н"
         If I = 1 Then S = " неделя" Else If (I >= 2 And I < 5) Then S = " недели" Else: S = " недель"
         Case "М"
         If I = 1 Then S = " месяц" Else If (I >= 2 And I < 5) Then S = " месяца" Else: S = " месяцев"
         Case "Г"
         If I = 1 Then S = " год" Else If (I >= 2 And I < 5) Then S = " года" Else: S = " лет"
         Case "D"
         If I = 1 Then S = " день" Else If (I >= 2 And I < 5) Then S = " дня" Else: S = " дней"
         Case "W"
         If I = 1 Then S = " неделя" Else If (I >= 2 And I < 5) Then S = " недели" Else: S = " недель"
         Case "M"
         If I = 1 Then S = " месяц" Else If (I >= 2 And I < 5) Then S = " месяца" Else: S = " месяцев"
         Case "Y"
         If I = 1 Then S = " год" Else If (I >= 2 And I < 5) Then S = " года" Else: S = " лет"
     End Select
     If Прописные Then S = UCase(S)
     ИнтервалВремени = Format(Интервал) & S
End Function
[/vba]
Функция ИнтервалВремени в качестве второго аргумента принимает:
Д или D для Дней
Н или W для недель
М или M для месяцев
Г или Y для лет
Нечувствительна к регистру
При невведенном втором аргументе считает в днях
Если второй аргумент введен неправильно, возвращает введенное число, преобразованное в текст
Если третий аргумент - Прописные (необязательный) равен Истина (1), формула возвращает значение в верхем регистре
 
Ответить
СообщениеЕсли не побрезгуете UDF, то вот, когда-то писал для похожей ситуации
[vba]
Код
Function ИнтервалВремени(Интервал As Long, Optional Ед_Времени As String, Optional Прописные As Boolean)
     Dim I As Integer, D As String
     I = Интервал Mod 100
     If I > 20 Then I = I Mod 10
     Ед_Времени = UCase(Ед_Времени)
     S = ""
     If Ед_Времени = "" Then Ед_Времени = "Д"
     Select Case Ед_Времени
         Case "Д"
         If I = 1 Then S = " день" Else If (I >= 2 And I < 5) Then S = " дня" Else: S = " дней"
         Case "Н"
         If I = 1 Then S = " неделя" Else If (I >= 2 And I < 5) Then S = " недели" Else: S = " недель"
         Case "М"
         If I = 1 Then S = " месяц" Else If (I >= 2 And I < 5) Then S = " месяца" Else: S = " месяцев"
         Case "Г"
         If I = 1 Then S = " год" Else If (I >= 2 And I < 5) Then S = " года" Else: S = " лет"
         Case "D"
         If I = 1 Then S = " день" Else If (I >= 2 And I < 5) Then S = " дня" Else: S = " дней"
         Case "W"
         If I = 1 Then S = " неделя" Else If (I >= 2 And I < 5) Then S = " недели" Else: S = " недель"
         Case "M"
         If I = 1 Then S = " месяц" Else If (I >= 2 And I < 5) Then S = " месяца" Else: S = " месяцев"
         Case "Y"
         If I = 1 Then S = " год" Else If (I >= 2 And I < 5) Then S = " года" Else: S = " лет"
     End Select
     If Прописные Then S = UCase(S)
     ИнтервалВремени = Format(Интервал) & S
End Function
[/vba]
Функция ИнтервалВремени в качестве второго аргумента принимает:
Д или D для Дней
Н или W для недель
М или M для месяцев
Г или Y для лет
Нечувствительна к регистру
При невведенном втором аргументе считает в днях
Если второй аргумент введен неправильно, возвращает введенное число, преобразованное в текст
Если третий аргумент - Прописные (необязательный) равен Истина (1), формула возвращает значение в верхем регистре

Автор - МВТ
Дата добавления - 11.02.2015 в 18:54
AlexM Дата: Среда, 11.02.2015, 21:20 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1130 ±
Замечаний: 0% ±

Excel 2003
Еще вариант
Код
="Остал"&ЕСЛИ(ИЛИ(ОСТАТ(A1;{10;100})={0;9:5;9:6;11:7;12:8;13:9;14});"ось "&A1&" дней";ЕСЛИ(--ПРАВБ(A1)=1;"ся "&A1&" день";"ось "&A1&" дня"))



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЕще вариант
Код
="Остал"&ЕСЛИ(ИЛИ(ОСТАТ(A1;{10;100})={0;9:5;9:6;11:7;12:8;13:9;14});"ось "&A1&" дней";ЕСЛИ(--ПРАВБ(A1)=1;"ся "&A1&" день";"ось "&A1&" дня"))

Автор - AlexM
Дата добавления - 11.02.2015 в 21:20
  • Страница 1 из 1
  • 1
Поиск:

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