我是 Excel 及其 VBA 对象模型的新手。 我有这个表(A-D)按 A 和 B 排序。对于每个 A-B 组行,我想找到该最大值的 MAX D(成本)值和 C(销售 ID)。就像较小的表 (F1:J4)。我摆弄了一个数据透视表,但无法获取销售 ID。 【忽略格式,为方便阅读而添加】
无论如何,我正在寻找 VBA 解决方案。如果我为每个 A-B 组创建一个范围,我确信我可以做到这一点。但如何呢?我能找到的最接近的是这个问题:GroupBy and Sum rows using multiple columns in Excel,但这并没有给我ID值,而且看起来相当不雅观。
这可以使用 Windows Excel 2010+ 和 Microsoft 365(Windows 或 Mac)中提供的 Power Query 来完成
使用 Power Query
Data => Get&Transform => from Table/Range
Home => Advanced Editor
Applied Steps
以了解算法let
//change table name in next line to reflect actual data source
Source = Excel.CurrentWorkbook(){[Name="Table5"]}[Content],
//If Sale ID and Cost are not integers, will need to change data type
// both in this step and below
#"Changed Type" = Table.TransformColumnTypes(Source,{
{"Name", type text}, {"Product", type text}, {"Sale ID", Int64.Type}, {"Cost", Int64.Type}}),
//Group by the relative columns, then filter and extract the ID and max cost
#"Grouped Rows" = Table.Group(#"Changed Type", {"Name", "Product"}, {
{"Id/Max Cost", (t)=>Table.SelectRows(t, each [Cost]=List.Max(t[Cost])),
type table[Name=text, Product=text, Sale ID=Int64.Type, Cost=Int64.Type]}}),
#"Expanded Id/Max Cost" = Table.ExpandTableColumn(#"Grouped Rows", "Id/Max Cost",
{"Sale ID", "Cost"}, {"Max Cost.Sale ID", "Max Cost.Cost"})
in
#"Expanded Id/Max Cost"