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(sum... (quantity * price)) 运行单个查询来获取我的投资组合的总价值。

请帮助:)

此查询将产生最新日期但没有价格 :(

QUERY('stock'!$A:$C;"select A, max(B) where A<>'' group by A label A '', max(B) ''")

4

2 回答 2

0

看看这是否有效

=ArrayFormula(iferror(vlookup(unique(A2:A); sort(A2:C; 2; 0); {1\2\3} ;0)))
于 2016-07-16T09:54:32.287 回答
0

干得好:

=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(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);))

我所做的只是在数组上添加一个过滤器函数——还要注意这个公式根本不需要使用查询

在此处输入图像描述

于 2016-07-16T10:43:27.610 回答