Sign in to follow this  
Followers 0
nadia

Знатокам Экселя

63 posts in this topic

Мне необходимо сделать так чтобы число в ячейке с истечением времени менялось на определенный коэффицент автоматом.

Т.е. допустим число 5, надо чтобы каждый месяц от этого числа отнималось допустим 0.6, но чтобы это делалось автоматом, без ручного ввода.

Подскажите пожалуйста это возможно?

0

Share this post


Link to post
Share on other sites

вы бы Эксель не кирилизировали а то сидел тут и разбирался ... что такое Эксель?

0

Share this post


Link to post
Share on other sites

Вам нужно программа а не эксель

0

Share this post


Link to post
Share on other sites

Посмотрите VBA. Можете использовать макросы.

0

Share this post


Link to post
Share on other sites

Насколько сложно написать макрос для этой функции?

0

Share this post


Link to post
Share on other sites

Фунция "СЕГОДНЯ" из нее получаешь месяц и год, находишь разницу с точкой отсчета, умножаешь на коэффициент и вычитаешь из 5

 

Макросы не нужны для этого примера

0

Share this post


Link to post
Share on other sites

Мне кажется, что такое в Excele невозможно...

 

Хотя Алекс прав :lol:

0

Share this post


Link to post
Share on other sites

=5-0.6*MONTH(NOW())

0

Share this post


Link to post
Share on other sites
=5-0.6*MONTH(NOW())

А через год что он покажет? :)

 

Год надо учитавать

0

Share this post


Link to post
Share on other sites

Количество целых пройденных месяцев от установленной даты (мес/год без учета дней) можно посчитать по формуле

 

=(YEAR(TODAY())-BegYear)*12+MONTH(TODAY())-BegMonth

 

, где вместо BegYear и BegMonth надо подставить соответственно начальные год и месяц осчета. Дальше - любые вычисления с полученным числом. Значение формулы будет меняться при смене текущего месяца.

0

Share this post


Link to post
Share on other sites

Не совсем так.

 

Если BegMonth=12, а сейчас январь, получится -11

 

=(YEAR(TODAY())-BegYear)*12+MONTH(TODAY())-BegMonth

 

я бы сделал так. вбил в, скажем, ячейку А1 дату, от которой нужно плясать.

 

потом посчитал в среднем кол-во дней в месяце, это (365*3+366)/48=30.4375

 

дальше формула =5-0.6*((now()-A1)/30.4375)

 

Это даст примерный и более-менее "честный" отсчет месяцев.

0

Share this post


Link to post
Share on other sites
Не совсем так.

 

Если BegMonth=12, а сейчас январь, получится -11

 

=(YEAR(TODAY())-BegYear)*12+MONTH(TODAY())-BegMonth

 

я бы сделал так. вбил в, скажем, ячейку А1 дату, от которой нужно плясать.

 

потом посчитал в среднем кол-во дней в месяце, это (365*3+366)/48=30.4375

 

дальше формула =5-0.6*((now()-A1)/30.4375)

 

Это даст примерный и более-менее "честный" отсчет месяцев.

Вы не правы, jako привел правильную формулу. Он учитывает и год. Поэтому отрицательный коэффициент будет только когда дата отсчета больше текущей.

Edited by Алекс
0

Share this post


Link to post
Share on other sites

=(YEAR(TODAY())-BegYear)*12+MONTH(TODAY())-BegMonth

А куда тут поставить 5 и 0.6?

Всем спасибо за участие.

0

Share this post


Link to post
Share on other sites

=5 - 0.6*((YEAR(TODAY())-BegYear)*12+MONTH(TODAY())-BegMonth)

0

Share this post


Link to post
Share on other sites

В ячейку A1 пишем стартовую дату

[=DATE(2007,1,1)]

(год, месяц, число)

 

В ячейку A2 пишем формулу:

[=5-0.6*(YEAR(TODAY())-YEAR(A1))*12+MONTH(TODAY())-MONTH(A1)]

 

 

Я так подозреваю, высчитывается амортизация :angry:

0

Share this post


Link to post
Share on other sites

а если я хочу чтобы это происходило каждые 3 месяца то вместо *12, надо поставить 3?

 

и если вместо вычитания необходимо сделать умножение? Надо там еще скобки ставить или нет?

 

и еще чтобы с точностью до дня.

0

Share this post


Link to post
Share on other sites
а если я хочу чтобы это происходило каждые 3 месяца то вместо *12, надо поставить 3?

Нет, 12 здесь - количество месяцев в году.

=5 - 0.6 * 3 * ОКРВНИЗ(((YEAR(TODAY())-BegYear)*12+MONTH(TODAY())-BegMonth)/3, 0)

На Инглише это будет наверно FLOOR, но проверить не могу, нет английского варианта

 

Это я написал раз в три месяца.

Если вычитание нужно заменить на умножение - скобок не надо.

Для остального рекомендую читать справку по функциям, она встроена и там все это описано. Так что значит для дней - непонятно.

Edited by Алекс
0

Share this post


Link to post
Share on other sites

вы можете сразу всю формулу написать?

Скобки не надо.

 

Алекс, ты там ошибся. Последний параметр у FLOOR - это точность округления.

=5-0.6*3*FLOOR(((YEAR(TODAY())-YEAR(A1))*12+MONTH(TODAY())-MONTH(A1))/3,1)

 

 

 

Вот так и работают программисты: заказчик даёт одно задание, потом надо оказса другое, в 3 раза сложнее, а в итоге он оказса сам не знает, чего ему надо :angry::):)

Edited by Aladdin
0

Share this post


Link to post
Share on other sites

я имею ввиду чтобы дата отсчета содержала день, месяц и год, а не просто год и месяц.

0

Share this post


Link to post
Share on other sites
Алекс, ты там ошибся. Последний параметр у FLOOR - это точность округления.

Нет, это не баг - это фича :angry:

Округление нужно именно до целого, т.е. до 0 знаков после запятой :)

Таким образом будет вычитаться коэффициент раз в три месяца.

 

А топикстартеру - Вы бы Ваши задачи с самого начала однозначно формулировали, а то постановка решается по ходу решения :)

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

Edited by Алекс
0

Share this post


Link to post
Share on other sites
я имею ввиду чтобы дата отсчета содержала день, месяц и год, а не просто год и месяц.

 

Дальнейшие усовершенствования - за деньги :angry:

 

Нет, это не баг - это фича :)

Округление нужно именно до целого, т.е. до 0 знаков после запятой :)

 

Там последний параметр - это не количество знаков после запятой, а is the multiple to which you want to round.

(незнаю, как по русски).

Иначе получишь ошибку деления на ноль (кажется).

Edited by Aladdin
0

Share this post


Link to post
Share on other sites
Там последний параметр - это не количество знаков после запятой, а is the multiple to which you want to round.

(незнаю, как по русски)

Да, точно - количество цифр, до которого округляется число. Тогда 1.

0

Share this post


Link to post
Share on other sites

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

Алладин: А за какие деньги вы сможете сделать дальнейшее усовершенствование?

0

Share this post


Link to post
Share on other sites
Просто я имею мало опыта в формулировке задач программистам, для этого тоже навыки нужны чтобы это делать так как хочет программист.

Важнее понять что нужно Вам :o Программист Вас поймет, если Вы будете точно знать что хотите.

 

Да, точно - количество цифр, до которого округляется число. Тогда 1.

Кстати проверил :o

Таки это была фича. Справка Экселя врет. Этот параметр - количество знаков после запятой. Т.е. нужен 0.

0

Share this post


Link to post
Share on other sites

раз так, то лучше сразу сформулировать все техническое задание :o

0

Share this post


Link to post
Share on other sites
Sign in to follow this  
Followers 0