2016-06-24 2 views
0

Привет у меня есть этот файл Excel:ВПР давая последнее значение каждого месяца

Date GBP_S(t) A 
27/12/88 1,80400 
28/12/88 1,78900 
29/12/88 1,78950 
30/12/88 1,80850 
2/01/89 0,00000 
3/01/89 1,82250 
4/01/89 1,80700 
5/01/89 1,79700 
6/01/89 1,78000 
9/01/89 1,76360 
10/01/89 1,76370 
11/01/89 1,78100 
12/01/89 1,78400 
13/01/89 1,77870 
16/01/89 0,00000 
17/01/89 1,76800 
18/01/89 1,75450 
19/01/89 1,75000 
20/01/89 1,76850 
23/01/89 1,77400 
24/01/89 1,76770 
25/01/89 1,77100 
26/01/89 1,77350 
27/01/89 1,75800 
30/01/89 1,76180 
31/01/89 1,75000 
1/02/89 1,75350 
2/02/89 1,75080 
3/02/89 1,74150 
6/02/89 1,73270 
7/02/89 1,74250 
8/02/89 1,74330 
9/02/89 1,75480 
10/02/89 1,75430 
13/02/89 1,74950 
14/02/89 1,76850 
15/02/89 1,77330 
16/02/89 1,77080 
17/02/89 1,77600 
20/02/89 0,00000 
21/02/89 1,75020 
22/02/89 1,75050 
23/02/89 1,76000 
24/02/89 1,75300 
27/02/89 1,74480 
28/02/89 1,74400 
1/03/89 1,72400 
2/03/89 1,72380 
3/03/89 1,72300 
6/03/89 1,72200 
7/03/89 1,72170 
8/03/89 1,71970 
9/03/89 1,71750 
10/03/89 1,71550 
13/03/89 1,71150 
14/03/89 1,72720 
15/03/89 1,71900 
16/03/89 1,71790 
17/03/89 1,71300 
20/03/89 1,71030 
21/03/89 1,72000 
22/03/89 1,72280 
23/03/89 1,72180 
24/03/89 1,71900 
27/03/89 1,71000 
28/03/89 1,68800 
29/03/89 1,68860 
30/03/89 1,68750 
31/03/89 1,68520 
3/Apr/89 1,68600 
... 

Я пытаюсь построить простую функцию ВПР, но ее не работает. Я хочу функцию procv, которая дает мне в третьем столбце (A) последнее значение каждого месяца o столбец Date.

So: A1 = 1,80850; A2 = 1,75000; и так далее ...

Любая помощь? Большое спасибо.

+1

(FYI "Procv" является португальским для "VlookUp") – BruceWayne

+0

Спасибо, Брюс. Ред. – Laorie

+0

lol на этот вопрос сразу после brexit XD – findwindow

ответ

3

лично я хотел бы использовать вспомогательный столбец в этом случае:

В C2 поместить следующее:

=IF(MONTH($A2)<>MONTH($A3),MAX($C$1:$C1)+1,"") 

И скопируйте длину данных

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

Затем вы можете использовать этот столбец в INDEX/MATCH для возврата значений в конце каждого месяца:

=IFERROR(INDEX(B:B,MATCH(ROW(1:1),C:C,0)),"") 

И скопировать вниз, пока вы получите пустые ячейки.

enter image description here


Если вы хотите, чтобы все это в одной формуле:

=IFERROR(INDEX($B$2:$B$194,AGGREGATE(15,6,(ROW($A$2:$A$193)-1)/(MONTH($A$2:$A$193)<>MONTH($A$3:$A$194)),ROW(1:1))),"") 

Он использует данные из приведенного выше листа. Это немного сложнее понять.

+0

@Laorie - Я согласен с Скоттом. Невозможно выразить то, что вы хотите, с формулами акций (без использования вспомогательной колонки), о которых я знаю. Кроме того, по моему опыту, любая пользовательская функция VBA для поиска будет иметь довольно ужасную производительность. – JamesFaix

+0

@JamesFaix см. Редактирование. Одна формула. Если бы это был я, я бы использовал один метод формулы, но обнаружил, что он открывает больше вопросов, чем помощь на таких сайтах. –

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