【问题标题】:Get average stock price in Google Sheets from a list从列表中获取 Google 表格中的平均股票价格
【发布时间】:2021-02-13 18:43:54
【问题描述】:

我正在尝试从动态列表中获取平均股票价格。

在我的示例中,我在不同的几天内买入了股票。我已经卖掉了一些(不是全部)。所以,我有一些可用的股票,我想找出平均价格:

如何在不手动更改列表的情况下从未售出的股票中获取从较早日期到最近日期的平均价格?

手动,结果必须是:$19,82

我已经建立了一个example sheet。

谢谢!任何帮助将不胜感激!

【问题讨论】:

    标签: google-sheets stock weighted-average


    【解决方案1】:

    使用:

    =AVERAGE.WEIGHTED(FILTER(E3:E6; B3:B6="buy"); FILTER(D3:D6; B3:B6="buy"))
    


    更新 1:

    =INDEX(AVERAGE.WEIGHTED(FILTER(E3:E6; B3:B6="buy"); FILTER(D3:D6; B3:B6="buy")-
     {SEQUENCE(COUNTIF(B3:B6; "buy")-1; 1; 0; 0); FILTER(D3:D6; B3:B6="sell")}))
    


    更新 2:

    =ARRAYFORMULA(AVERAGE.WEIGHTED(FILTER(E3:E6; B3:B6="buy"); IF(0<FILTER(D3:D6; B3:B6="buy")+
     IF(0>MMULT(TRANSPOSE((SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy")))>=
     TRANSPOSE(SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy")))))*
     QUERY({FILTER(D3:D6; B3:B6="buy");-SUM(FILTER(D3:D6; B3:B6="sell"))}; "offset 1"; 0)); 
     SIGN(SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy"))))); 
     MMULT(TRANSPOSE((SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy")))>=
     TRANSPOSE(SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy")))))*
     QUERY({FILTER(D3:D6; B3:B6="buy");-SUM(FILTER(D3:D6; B3:B6="sell"))}; "offset 1"; 0)); 
     SIGN(SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy"))))); 0); FILTER(D3:D6; B3:B6="buy")+
     IF(0>MMULT(TRANSPOSE((SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy")))>=
     TRANSPOSE(SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy")))))*
     QUERY({FILTER(D3:D6; B3:B6="buy");-SUM(FILTER(D3:D6; B3:B6="sell"))}; "offset 1"; 0)); 
     SIGN(SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy"))))); 
     MMULT(TRANSPOSE((SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy")))>=
     TRANSPOSE(SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy")))))*
     QUERY({FILTER(D3:D6; B3:B6="buy");-SUM(FILTER(D3:D6; B3:B6="sell"))}; "offset 1"; 0)); 
     SIGN(SEQUENCE(COUNTA(FILTER(D3:D6; B3:B6="buy"))))); 0); 0)))
    

    【讨论】:

    • 谢谢,但目标是在不手动将 12 更改为 2 的情况下获得该结果。您知道这是否可能吗?自动从最后一次购买的单位中恢复 10 单位。
    • 谢谢!这很棒。如果它是 12 单元格中小于 10 的数字会怎样?例如一个 8,你必须从上面的行中取出 8 和 2。
    • @AntorCha 将最后一个 FILTER 包装到 SUM 中
    • 就像它没有给出值一样。我已经更新了谷歌表格。 =INDEX(AVERAGE.WEIGHTED(FILTER(E3:E6; B3:B6="buy"); FILTER(D3:D6; B3:B6="buy")- {SEQUENCE(COUNTIF(B3:B6; "buy")-1; 1; 0; 0); sum(FILTER(D3:D6; B3:B6="sell"))}))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2020-04-21
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 2022-08-10
    相关资源
    最近更新 更多