Excel-有没有一种方法可以基于2个相关标准求和,然后找到最大和值?

时间:2019-08-30 20:00:36

标签: arrays excel excel-formula max

我有一个按城市和建筑物名称列出的建筑物列表,所有建筑物都有5个相关联的项目,每个项目都有货币价值。我正在尝试根据城市和建筑物名称将这5个值相加,然后在这些和中我想输出最大值。

enter image description here

我尝试在图像的值单元格F4中使用此代码,但它仅返回表中前5个项目的总和。

=MAX(SUMIFS(Table1[Value],Table1[Location],INDEX(Table1[Location],,1)))

我不确定如何存储不同建筑物的所有求和值的列表,然后输出最大值。

我还希望与最大和值关联的城市和建筑物名称在其他2个单元格G4和H4中输出

3 个答案:

答案 0 :(得分:2)

获取最大金额

=MAX(SUMIFS(Table1[Value],Table1[Location],Table1[Location],Table1[Building],Table1[Building]))

为城市

=INDEX(Table1[Location],MATCH(F4,SUMIFS(Table1[Value],Table1[Location],Table1[Location],Table1[Building],Table1[Building]),0))

和建筑物

=INDEX(Table1[Building],MATCH(F4,SUMIFS(Table1[Value],Table1[Location],Table1[Location],Table1[Building],Table1[Building]),0))

全部使用 Ctrl Shift Enter

输入为数组公式

enter image description here

答案 1 :(得分:1)

您也可以使用Power Query进行此操作。

如果两座建筑物的值均相同,这将特别有用,因为我已经调整了以下数据以显示。

  • 按位置和建筑物将行分组
    • 通过Sum
    • 进行汇总
  • 通过“最大值”列过滤行
  • 进行一些重新排列和重命名

除了Filter操作(需要在Advanced Editor中手动输入)之外,所有操作都可以使用Power Query GUI进行。

M代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Location", type text}, {"Building", type text}, {"Item", type text}, {"Value", Currency.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Location", "Building"}, {{"Total Values", each List.Sum([Value]), type number}}),
    #"Filtered Rows" = Table.SelectRows(#"Grouped Rows", each ([Total Values] = List.Max(#"Grouped Rows"[Total Values]))),
    #"Reordered Columns" = Table.ReorderColumns(#"Filtered Rows",{"Total Values", "Location", "Building"}),
    #"Renamed Columns" = Table.RenameColumns(#"Reordered Columns",{{"Total Values", "Value"}})
in
    #"Renamed Columns"

源数据

enter image description here

最大值

enter image description here

答案 2 :(得分:0)

有一个简单的解决方法。如果没问题,您可以在表格中添加一列,其中包含该建筑物/位置的总和

=SUMIFS(Table1[Value],Table1[Location],[@[Location]],Table1[Building],[@[Building]]) 

(表格中的此类内容)

Example

然后执行该新列的MAX

编辑:

顺便说一句,您也可以使用数据透视表进行操作,并过滤总和的前1个值