Posted 15.01.2008 11:51 Мне необходимо сделать так чтобы число в ячейке с истечением времени менялось на определенный коэффицент автоматом. Т.е. допустим число 5, надо чтобы каждый месяц от этого числа отнималось допустим 0.6, но чтобы это делалось автоматом, без ручного ввода. Подскажите пожалуйста это возможно? 0 Share this post Link to post Share on other sites
Posted 15.01.2008 12:01 вы бы Эксель не кирилизировали а то сидел тут и разбирался ... что такое Эксель? 0 Share this post Link to post Share on other sites
Posted 15.01.2008 12:14 Вам нужно программа а не эксель 0 Share this post Link to post Share on other sites
Posted 15.01.2008 12:26 Посмотрите VBA. Можете использовать макросы. 0 Share this post Link to post Share on other sites
Posted 15.01.2008 12:38 Насколько сложно написать макрос для этой функции? 0 Share this post Link to post Share on other sites
Posted 15.01.2008 12:40 Фунция "СЕГОДНЯ" из нее получаешь месяц и год, находишь разницу с точкой отсчета, умножаешь на коэффициент и вычитаешь из 5 Макросы не нужны для этого примера 0 Share this post Link to post Share on other sites
Posted 15.01.2008 12:58 Мне кажется, что такое в Excele невозможно... Хотя Алекс прав 0 Share this post Link to post Share on other sites
Posted 15.01.2008 14:15 =5-0.6*MONTH(NOW()) А через год что он покажет? Год надо учитавать 0 Share this post Link to post Share on other sites
Posted 15.01.2008 23:34 Количество целых пройденных месяцев от установленной даты (мес/год без учета дней) можно посчитать по формуле =(YEAR(TODAY())-BegYear)*12+MONTH(TODAY())-BegMonth , где вместо BegYear и BegMonth надо подставить соответственно начальные год и месяц осчета. Дальше - любые вычисления с полученным числом. Значение формулы будет меняться при смене текущего месяца. 0 Share this post Link to post Share on other sites
Posted 16.01.2008 04:23 Не совсем так. Если 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
Posted 16.01.2008 04:43 (edited) Не совсем так. Если 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 16.01.2008 04:44 by Алекс 0 Share this post Link to post Share on other sites
Posted 16.01.2008 05:45 =(YEAR(TODAY())-BegYear)*12+MONTH(TODAY())-BegMonth А куда тут поставить 5 и 0.6? Всем спасибо за участие. 0 Share this post Link to post Share on other sites
Posted 16.01.2008 05:51 =5 - 0.6*((YEAR(TODAY())-BegYear)*12+MONTH(TODAY())-BegMonth) 0 Share this post Link to post Share on other sites
Posted 16.01.2008 06:03 В ячейку A1 пишем стартовую дату [=DATE(2007,1,1)] (год, месяц, число) В ячейку A2 пишем формулу: [=5-0.6*(YEAR(TODAY())-YEAR(A1))*12+MONTH(TODAY())-MONTH(A1)] Я так подозреваю, высчитывается амортизация 0 Share this post Link to post Share on other sites
Posted 16.01.2008 06:13 а если я хочу чтобы это происходило каждые 3 месяца то вместо *12, надо поставить 3? и если вместо вычитания необходимо сделать умножение? Надо там еще скобки ставить или нет? и еще чтобы с точностью до дня. 0 Share this post Link to post Share on other sites
Posted 16.01.2008 06:15 (edited) а если я хочу чтобы это происходило каждые 3 месяца то вместо *12, надо поставить 3? Нет, 12 здесь - количество месяцев в году. =5 - 0.6 * 3 * ОКРВНИЗ(((YEAR(TODAY())-BegYear)*12+MONTH(TODAY())-BegMonth)/3, 0) На Инглише это будет наверно FLOOR, но проверить не могу, нет английского варианта Это я написал раз в три месяца. Если вычитание нужно заменить на умножение - скобок не надо. Для остального рекомендую читать справку по функциям, она встроена и там все это описано. Так что значит для дней - непонятно. Edited 16.01.2008 06:16 by Алекс 0 Share this post Link to post Share on other sites
Posted 16.01.2008 06:24 (edited) вы можете сразу всю формулу написать? Скобки не надо. Алекс, ты там ошибся. Последний параметр у FLOOR - это точность округления. =5-0.6*3*FLOOR(((YEAR(TODAY())-YEAR(A1))*12+MONTH(TODAY())-MONTH(A1))/3,1) Вот так и работают программисты: заказчик даёт одно задание, потом надо оказса другое, в 3 раза сложнее, а в итоге он оказса сам не знает, чего ему надо :) Edited 16.01.2008 06:40 by Aladdin 0 Share this post Link to post Share on other sites
Posted 16.01.2008 06:36 я имею ввиду чтобы дата отсчета содержала день, месяц и год, а не просто год и месяц. 0 Share this post Link to post Share on other sites
Posted 16.01.2008 06:44 (edited) Алекс, ты там ошибся. Последний параметр у FLOOR - это точность округления. Нет, это не баг - это фича Округление нужно именно до целого, т.е. до 0 знаков после запятой Таким образом будет вычитаться коэффициент раз в три месяца. А топикстартеру - Вы бы Ваши задачи с самого начала однозначно формулировали, а то постановка решается по ходу решения С днями решить сложнее, так как нет функций возвращающих количество дней в определенном году и месяце. Т.е. решение будет приблизительным, или надо делать другими способами. Edited 16.01.2008 06:46 by Алекс 0 Share this post Link to post Share on other sites
Posted 16.01.2008 06:48 (edited) я имею ввиду чтобы дата отсчета содержала день, месяц и год, а не просто год и месяц. Дальнейшие усовершенствования - за деньги Нет, это не баг - это фича Округление нужно именно до целого, т.е. до 0 знаков после запятой Там последний параметр - это не количество знаков после запятой, а is the multiple to which you want to round. (незнаю, как по русски). Иначе получишь ошибку деления на ноль (кажется). Edited 16.01.2008 06:52 by Aladdin 0 Share this post Link to post Share on other sites
Posted 16.01.2008 06:52 Там последний параметр - это не количество знаков после запятой, а is the multiple to which you want to round.(незнаю, как по русски) Да, точно - количество цифр, до которого округляется число. Тогда 1. 0 Share this post Link to post Share on other sites
Posted 16.01.2008 06:57 Просто я имею мало опыта в формулировке задач программистам, для этого тоже навыки нужны чтобы это делать так как хочет программист. Алладин: А за какие деньги вы сможете сделать дальнейшее усовершенствование? 0 Share this post Link to post Share on other sites
Posted 16.01.2008 07:07 Просто я имею мало опыта в формулировке задач программистам, для этого тоже навыки нужны чтобы это делать так как хочет программист. Важнее понять что нужно Вам :o Программист Вас поймет, если Вы будете точно знать что хотите. Да, точно - количество цифр, до которого округляется число. Тогда 1. Кстати проверил :o Таки это была фича. Справка Экселя врет. Этот параметр - количество знаков после запятой. Т.е. нужен 0. 0 Share this post Link to post Share on other sites
Posted 16.01.2008 09:20 раз так, то лучше сразу сформулировать все техническое задание :o 0 Share this post Link to post Share on other sites