2017-02-08 10 views
0

Это слегка скорректированный вариант вопроса здесь: Calculating Weekly Returns from Daily Time Series of Prices которые ответили @Scott Крейнер:Расчет Еженедельные Возвращается из Daily временных рядов цен v2

Я хочу, чтобы вычислить еженедельные возвращения взаимного фонда от времени серия ежедневных цен. Мои данные выглядит следующим образом:

A  B  C  D  E 
DATE  WEEK W.DAY MF.PRICE WEEKLY RETURN 
02/01/12 1 1  2,7587 -0,0108 
03/01/12 1 2  2,7667 
04/01/12 1 3  2,7892 
05/01/12 1 4  2,7666 
06/01/12 1 5  2,7391  
09/01/12 2 1  2,7288 0,0067 
10/01/12 2 2  2,6707 
11/01/12 2 3  2,7044 
12/01/12 2 4  2,7183 
13/01/12 2 5  2,7619  
16/01/12 3 1  2,7470 0,0511 
17/01/12 3 2  2,7878 
18/01/12 3 3  2,8156 
19/01/12 3 4  2,8310 
20/01/12 3 5  2,8760 
23/01/12 4 1  2,8875 

Дата является (уу дд/мм /) формат и «» десятичный разделитель. Это можно сделать, используя эту формулу: (Цена за первый рабочий день следующей недели - Цена за первый рабочий день текущей недели)/(Цена за первый рабочий день текущей недели). Например, доход за первую неделю составляет (2,7288 - 2,7587)/2,7587 = -0,0108, а для второго - (2,7470-2,7288)/2,7288 = 0,0067.

Проблема в том, что этот список можно найти в течение года, а некоторые недели имеют менее пяти рабочих дней из-за праздников или по другим причинам. Несколько недель начинаются с буднего дня 2, некоторые заканчиваются будним днем ​​3. Поэтому я не могу просто скопировать и вставить формулу выше. Я добавил дополнительные два столбца для номера недели и дня недели, используя функции WEEKNUM и WEEKDAY, подумал, что это может помочь. Я хочу, чтобы автоматизировать это с формулой и надеемся получить таблицу, как это:

WEEK RETURN 
1  -0,0108 
2  0,0067 
3  0,0511 
.  
.  
.  

Я ищу способ сказать первенствует «найти цены, которые соответствуют минутных будням двух недель подряд и примените формулу «(Цена за первый рабочий день следующей недели - Цена за первый рабочий день текущей недели)/(Цена за первый рабочий день текущей недели)».

Я был бы признателен за любую помощь (у меня есть 5 отдельных рабочих листов для последовательные годы, каждый с ежедневными ценами на 20 паевых инвестиционных фондов)

ответ

1

Мне кажется, что вы можете создать свою колонку E с th является формула E2:

=IF(B2=B1, "", (VLOOKUP(1+B2, B3:D9, 3, FALSE) - D2)/D2) 

Это ВПР ограничено на следующих 7 строк из каждой строки, объявляющего новую неделю.

Копирование во все ячейки даст результат, указанный в вашей первой таблице. Чтобы преобразовать этот результат в список (Week, Return), это вопрос фильтра, который скрывает пробелы от E.

Обратите внимание, что проблема может возникнуть, если WeekNum перезапускается от одного, когда достигнут новый год, но поскольку вы говорите, что каждый из ваших листов предназначен для одного (календарного) года, этого не должно произойти.

+0

Спасибо @ A.S.H, заменив комы точкой с запятой, формула отлично работала. Я проверил вручную несколько недель, которые имеют менее пяти рабочих дней, то есть недель, которые начинаются с будних дней, кроме 1-5. Нет проблем. Он будет изучать функции IF и VLOOKUP, чтобы выяснить, что на самом деле делает эта формула, еще раз спасибо! – orkanoid

+0

@orkanoid Рад знать, что это помогло :). В основном 'IF' используется для отображения только в строках с новым номером недели. Ядро - это 'VLookup', и мы полагались на то, что он гарантированно вернет первую согласованную строку. –

 Смежные вопросы

  • Нет связанных вопросов^_^