0

我在谷歌电子表格的表是这样的:查找最近的股票报价的具体日期

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年7月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,MAX(B),其中A! <> 'MAX(B)'“)”通过标签的一群'

+0

使用查询你的数据拉动动态或者是它是一个静态表? –

+0

嗨,这个查询是为了计算历史值,所以表是半静态的(我更新它一旦弱)。但我需要一个查询来计算许多日期和几个投资组合的价值,所以我仍然需要查询。这是用于计算每个投资组合的净资产值。 –

+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);)) 

IF YOU NEED日期参数也在这里于修订:

=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

我得到一个错误,不知道为什么。我也很高兴地说,我忘了一个标准,请在下面回答下面的评论。 –

+0

这个错误是因为我不知道您的区域设置使用分号,如果你我所有的逗号转换为分号它应该工作 –

+0

我加入了正确的格式为您区域设置在底部有 –

0

看看这个工程

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

它的工作原理完美,但我很喜欢sry,我忘了一个标准。我需要知道特定日期的最新价格。在电子表格中,我在E2和J2中添加了日期。是否可以在我的查询中以类似的方式在解决方案中添加条件(F2) https://docs.google.com/spreadsheets/d/1FH0_w7ZNAZIQ41AQZz4ylxJETfUgDCAjEth9skZxThc/edit#gid=0 –

+0

看起来像Aurielle已经更新我的公式。 – JPV