Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   [решено] Подскажите по формуле в EXCEL (http://forum.oszone.net/showthread.php?t=308887)

another_user 07-12-2015 12:45 2582336

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

Для общего понимания: идет расчет начальной (максимальной) цены контракта с использованием этого их реестра контрактов. Есть две значимые позиции, текущая дата и дата заключения контракта. Нужно, чтобы считался коэффициент для пересчета цен прошлых периодов к текущему уровню цен. Одна ячейка - цена из контракта, следующая за ней ячейка должна содержать формулу, считающую коэффициент исходя из нижеследующего. Если между текущей датой и датой заключения контракта больше 180 дней, то нужно... (и вот тут самое сложное для меня)... нужно чтобы формула определила месяц текущей даты и месяц даты заключения контракта (допустим текущая декабрь и дата заключения контракта - июнь), потом сходила в другой в лист в такую табличку (http://www.gks.ru/bgd/free/b00_24/Is...0/I000030R.HTM), там нашла эти месяцы и сделала (100 + (100,7 октябрь - 100) + (100,6 сентябрь - 100) + (100,4 - 100) + (100,8 - 100) + (100,2 - 100))/100= 1,027 и далее этот коэффициент умножить на цену контракта из первой ячейки.

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

okshef 07-12-2015 21:44 2582497

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

another_user 08-12-2015 20:16 2582801

Вложений: 1
Цитата:

Цитата okshef
легко копируется в Excel. »

Ну, попробуйте, скопируйте)

Файл 131730

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

okshef 08-12-2015 21:00 2582826

Цитата:

Цитата another_user
Ну, попробуйте, скопируйте) »

вы же скопировали :) Есть способ проще: Импорт данных в Excel 2010 из интернета
Очень плохо, что в вашем файле объединение ячеек - это существенно усложняет вычисления. Теперь по логике расчетов.
В ячейке H19 вижу дату заключения контракта, в ячейке K19 - цена за единицу. Как вы видите связь данных первого листа с данными со второго, что должно быть?

another_user 09-12-2015 10:00 2582958

Цитата:

Цитата okshef
объединение ячеек - это существенно усложняет вычисления. »

Почему? Просто за адресом нужно внимательней последить и все, по моему.

Цитата:

Цитата okshef
Теперь по логике расчетов. »

Вот смотрите, значит...

Ячейка D5 содержит указание на текущую дату. Смотрим источник ценовой информации № 3, где мы с вами видим, что дата заключения контракта 26 января 2015. К37 содержит цену товара, которая указана в контракте. В ячейке N37 в зависимости от текущей даты и даты заключения контракта должен полностью автоматически делаться расчет коэффициента для пересчета цен прошлых периодов к текущему уровню цен по логике, описанной в первом посте. Обратите, кстати, внимание, N37 содержит формулу и считает как мне нужно. Но проблема в том, что эта формула применима только если сейчас декабрь, а контракт заключен в январе. Эту формулу я писал специально под эти месяцы, а я хочу, чтобы формула сама определяла какой месяц сегодня и каким месяцем заключен контракт, а потом шла на лист GKS и автоматически выбирала оттуда данные по формуле (100+(х-100))/100, где х это каждый месяц в периоде между месяцем заключения контракта и текущим месяцем. Я надеюсь вы понимаете. ))

Я все-таки думаю, что Excel способен на это. Разве что мой мозг пока не способен.

okshef 12-12-2015 02:01 2584007

Вложений: 1
Цитата:

Цитата another_user
Если между текущей датой и датой заключения контракта больше 180 дней »

а если меньше?
Я так понял, что цена не меняется.

Так?

P.S. Думаю, у вас возникнут вопросы. Буду рад ответить.

another_user 12-12-2015 10:45 2584056

Цитата:

Цитата okshef
а если меньше?
Я так понял, что цена не меняется. »

Так.

Цитата:

Цитата okshef
Думаю, у вас возникнут вопросы. »

Еще бы! Как вы это сделали? Единственное что надо коэффициент округлять, а то если брать апрель, то он считается 1,036, а должен быть 1,04.

okshef 12-12-2015 12:04 2584078

Цитата:

Цитата another_user
а то если брать апрель »

поясните. Апреля в задаче нет. Думаю, с округлением вы и сами справитесь.

Теперь пояснения к формулам
  1. Я убрал объединение ячеек, уж простите...
  2. На листе 2 та же информация, что и на листе GKS, только убраны квартальные промежуточные расчеты. Введены именованные диапазоны (так красивее формула получается :)): в столбце В диапазону Лист2!$B$6:$B$27 присвоено имя "Месяцы", в столбце С диапазону Лист2!$C$6:$C$27 - "Коэффициенты"
  3. В столбце В Лист2 названия месяцев заменены числовыми значениями 1.01.2014, 1.02.2014 и т.д. и применено форматирование "[$-ru-RU]ММММ ГГГГ;@"
Теперь к формуле. Пояснения для ячейки Е13
Код:

=ЕСЛИ(РАЗНДАТ(C13;$B$1;"d")>179;D13*(100+СУММПРОИЗВ((Коэффициенты-100)*(Месяцы>ДАТАМЕС(C13;-1))))/100;D13)
РАЗНДАТ(C13;$B$1;"d") - недокументированная функция, но справка по ней есть. Одно замечание: вместо "Д", "М", "Г", и т.д. нужно использовать "d', "m", "y", и т.д.
Считает количество дней от текущей даты до даты в ячейке С13 в днях.
Поскольку один из дней входит в диапазон дат, пришлось в условии использовать не 180, а 179
Теперь непосредственно о вычислении
ваше желание:
Цитата:

(100+(х-100))/100, где х это каждый месяц в периоде между...
исполнено в виде
(100+СУММПРОИЗВ((Коэффициенты-100)*(Месяцы>ДАТАМЕС(C13;-1))))/100
(Коэффициенты-100) - вычитает 100 от каждого значение в диапазоне "Коэффициенты", это понятно. Результат: диапазон уменьшенных на 100 коэффициентов инфляции.
(Месяцы>ДАТАМЕС(C13;-1)) - отсекает месяцы, меньшие даты заключения контракта. Т.к. в диапазоне "Месяцы" месяц начинается с 1-го числа, нужно значение месяца в ячейке С13 уменьшить на 1 месяц, для этого нужна функция "ДАТАМЕС". Результат: диапазон логических 0 и 1. 0 - месяц меньше месяца закл. контракта, 1 - больше или равен.
Дальше функция СУММПРОИЗВ суммирует произведения двух диапазонов: уменьшенных коэффициентов и 0 и 1 согласно выбранным месяцам.
Остальное - чистая арифметика.

Надеюсь, понятно объяснил :)

another_user 12-12-2015 14:24 2584108

Цитата:

Цитата okshef
Надеюсь, понятно объяснил »

Большое человеческое спасибо!


Время: 01:52.

Время: 01:52.
© OSzone.net 2001-