查找特定日期的最新股票报价

时间:2016-07-15 11:48:29

标签: google-sheets array-formulas google-query-language

我在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(' stock'!$ A:$ C;"选择A,max(B)其中A<>''按A标签分组A& #39;',max(B)''")

2 个答案:

答案 0 :(得分:0)

看看是否有效

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

答案 1 :(得分: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);))

如果您需要日期参数,此处也可以进行修改:

 =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