0

У меня есть таблица в Google таблицу, как это:Найти самые последние котировки акций на определенную дату

Stock     Date   Price 
DNB Nordic Technology 2016-07-12 968,7449 
DNB Nordic Technology 2016-07-13 970,0482 
DNB Nordic Technology 2016-07-14 970,0500 
Elementa     2016-03-30 1167,0704 
Elementa     2016-04-30 1175,8091 
Elementa     2016-05-31 1184,1240 
Elementa     2016-06-30 1196,5268 
Evli Emerging Frontier B 2016-07-12 1164,6900 
Evli Emerging Frontier B 2016-07-14 1171,3400 

Что мне нужно, это таблица только с самой последней цене для каждой акции для конкретная дата экс 2016-07-13

DNB Nordic Technology  2016-07-13 970,0500 
Elementa     2016-06-30 1196,5268 
Evli Emerging Frontier B 2016-07-12 1166,9200 

Я хочу использовать запрос, так что я могу использовать результат/таблицу и запустить один запрос с использованием ArrayFormula (сумма ... (количество * цена)) чтобы получить полную стоимость для моего портфолио.

пожалуйста помощь :)

Этот запрос приведет к последней дате, но нет цены :(

QUERY ('запас' $ A: $ C; "выберите A, макс (B) где А! <> '' группа меткой A '', не более (B) '' ")

+0

Вы вытягивать в данных динамически или это статическая таблица? –

+0

Привет, этот запрос предназначен для вычисления исторических значений, поэтому таблица является полустатической (я обновляю ее как-то слабую). Но мне нужен запрос для вычисления значения для многих дат и нескольких портфелей, поэтому мне все еще нужен запрос. Это для расчета NAV для каждого портфеля. –

+0

Можете ли вы. Поделиться листом? –

ответ

0

Здесь вы идете:

=ARRAYFORMULA(IF(ISTEXT(UNIQUE(A2:A)),VLOOKUP(UNIQUE(A2:A),SORT(A2:C,1,true,2,false),{1,2,3},false),)) 

То, что я здесь делал, было первым условием для выполнения только строк, имеющих потенциальное значение, поэтому он не останавливает лист - тогда я сортирую, сначала по имени (по возрастанию), затем по дате (по убыванию), так что нам нужно только первую строку каждого имени, дата пары, то я возвращаю все индексы

enter image description here

Вот обновленный формат для вашей местности:

=ARRAYFORMULA(IF(ISTEXT(UNIQUE(A2:A));VLOOKUP(UNIQUE(A2:A);SORT(A2:C;1;true;2;false);{1\2\3};false);)) 

ЕСЛИ ВАМ ПАРАМУТ ДАТЫ ТАКЖЕ ЗДЕСЬ AT МОДИФИКАЦИИ:

=ARRAYFORMULA(IF(ISTEXT(UNIQUE(FILTER(A:A;B:B<=D1)));VLOOKUP(UNIQUE(FILTER(A:A;B:B<=D1));SORT(FILTER(A:C;B:B<=D1);1;true;2;false);{1\2\3};false);)) 

Все, что я сделал добавить функцию фильтра по массиву - также отмечают эту формулу не суммируется и не нужно использовать запрос на всех

enter image description here

+0

Я получаю сообщение об ошибке, не знаю почему. И я также так сплю, чтобы сказать, что я забыл один критерий, комментарии PLS на ответ ниже. –

+0

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

+0

Я добавил правильный формат для вашей локали внизу –

0

Смотрите, если это работает

=ArrayFormula(iferror(vlookup(unique(A2:A); sort(A2:C; 2; 0); {1\2\3} ;0))) 
+0

Это работает отлично, но я так я забыл один критерий. Мне нужна последняя цена за конкретную дату. В электронной таблице я добавил дату в E2 и J2. Можно ли добавить критерии для вашего решения аналогичным образом в моем запросе (F2) https://docs.google.com/spreadsheets/d/1FH0_w7ZNAZIQ41AQZz4ylxJETfUgDCAjEth9skZxThc/edit#gid=0 –

+0

Похоже, что Aurielle уже обновлен моя формула. – JPV