【问题标题】:Find most recent stock quotes for a specific date查找特定日期的最新股票报价
【发布时间】:2016-11-18 14:54:31
【问题描述】:

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

请帮忙:)

此查询将返回最新日期但没有价格:(

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

【问题讨论】:

  • 你是动态拉取数据还是静态表?
  • 您好,此查询用于计算历史值,因此该表是半静态的(我更新一次弱)。但我需要一个查询来计算许多日期和几个投资组合的价值,所以我仍然需要一个查询。这是为了计算每个投资组合的资产净值。
  • 你能。共享工作表?
  • 当然,这是一张纸。 F2 中的查询将得到一个包含名称和最后日期的表,但不是价格docs.google.com/spreadsheets/d/…

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


【解决方案1】:

给你:

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

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

【讨论】:

  • 我收到一个错误,不知道为什么。而且我也很抱歉地说我忘记了一个标准,请在下面的答案中查看 cmets。
  • 错误是因为我不知道您的语言环境使用分号,如果您将我所有的逗号都转换为分号,它应该可以工作
  • 我在底部添加了适合您语言环境的格式
  • 还添加了过滤器以解决您在下面提到的第二个要求@Per-ÅkeFranklind
【解决方案2】:

看看这是否有效

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

【讨论】:

  • 它工作得很好,但我很抱歉,我忘记了一个标准。我需要知道特定日期的最新价格。在电子表格中,我在 E2 和 J2 中添加了日期。是否可以像我在查询 (F2) docs.google.com/spreadsheets/d/… 中所做的那样在您的解决方案中添加条件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
相关资源
最近更新 更多