【问题标题】:Calculate average of a range with multiple column计算具有多列的范围的平均值
【发布时间】:2020-09-01 15:53:34
【问题描述】:

我有一个场景,我必须从一组日期计算股票的平均价格。考虑我有以下数据。

现在我想用以下格式表示数据:

每当在第一个表中添加新的脚本时,Above table 将存储平均价格。 我试过 AVERAGEIFS(),但它只计算单个列范围的平均值。但是我必须使用价格 * 给定股票范围内的数量来计算平均价格。 请提出建议。

【问题讨论】:

  • 使用带有计算列的数据透视表。

标签: excel average


【解决方案1】:

不确定我是否理解这个问题。 如果您想在没有帮助列的情况下根据平均价格获取总金额,您可以使用此

=AVERAGEIF($B$3:$E$8,B12,$E$3:$E$8)*SUMIF($B$3:$E$8,B12,$C$3:$C$8)

【讨论】:

    【解决方案2】:

    您可以为此使用 Power Query(在 Excel 2010+ 中可用)。

    在 Excel 2016+ 中(在早期版本中可能有所不同):

    • 选择数据表中的某个单元格
    • Data / Get & Transform / From Table/Range
    • 在 UI 中,打开Advanced Editor
      • 将下面的 M 代码粘贴到打开的窗口中
      • 更改第 2 行中的表名称以反映工作表中的实际表名称。

    注意:在 UI 的“应用步骤”窗口中,将光标悬停在信息图标上以阅读 cmets 以获得解释。您还可以双击齿轮图标以了解有关如何设置这些步骤的更多信息

    M 码

    let
        //Change Table name to correct name
        Source = Excel.CurrentWorkbook(){[Name="Table6"]}[Content],
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Stocks", type text}, {"Quantity", Int64.Type}, {"Date", type date}, {"Price", type number}}),
        
        //Group by Stock
        #"Grouped Rows" = Table.Group(#"Changed Type", {"Stocks"}, {{"Grouped", each _, type table [Stocks=nullable text, Quantity=nullable number, Date=nullable date, Price=nullable number]}}),
    
        //Sum quantity for each stock
        #"Added Custom1" = Table.AddColumn(#"Grouped Rows", "Quantity", each List.Sum(Table.Column([Grouped],"Quantity"))),
    
        //Compute weighted average price for each group of stocks
        #"Added Custom" = Table.AddColumn(#"Added Custom1", "Price", each List.Accumulate(
    List.Positions(Table.Column([Grouped],"Quantity")),
        0,
        (state, current) =>state + Table.Column([Grouped],"Price"){current} * 
        Table.Column([Grouped],"Quantity"){current})    
            / List.Sum(Table.Column([Grouped],"Quantity"))),
    
        //Compute Total Amount for each stock
        #"Added Custom2" = Table.AddColumn(#"Added Custom", "Amount", each [Quantity]*[Price]),
    
        //Remove extraneous Columns
        #"Removed Columns" = Table.RemoveColumns(#"Added Custom2",{"Grouped"})
    in
        #"Removed Columns"
    

    【讨论】:

      【解决方案3】:

      是否允许在数据中添加一列来计算 total_price?例如,列 E = 数量 * 价格。

      那么你的计算表会很简单。第 3 行的公式:

          Quantity: =SUMIFS(B:B,A:A,G3)
          Average_Price: =SUMIFS(E:E,A:A,G3) / SUMIFS(B:B,A:A,G3)
          Amount: =H3*I3
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-28
        相关资源
        最近更新 更多