如何将表格转换为摘要,如下所示

如何将表格转换为摘要,如下所示

我有如下表格。我想为某个类别添加行,并汇总所有(不包括空值)相同物种(例如柠檬)、每个类别下相同物种的长度 演示。现在我想合并表格,如图所示 - 在每个类别下添加的行应该具有不同的长度并且是自动的,例如 A 下可能没有全部 120 个物种。

NB:我尝试过pivot,但失败了。我有超过100个物种和1000个类别

答案1

不过,数据透视表可以帮上忙。源数据应放在行中,就像数据库中的记录一样。以下是数据透视表设置的示例。

  1. 复制源范围。

复制源范围

  1. 粘贴并转置。

粘贴并转置

  1. 在转置数据上构建数据透视表。

建立数据透视表

建立数据透视表

  1. 将类别名称“A”、“B”和“C”从顶部拖到“值”区域。

将类别名称拖到“值”区域

  1. 将每个类别名称的计算类型从“计数”更改为“总和”。

更改计算类型

更改计算类型

第 4 项和第 5 项的更新

如果有很多类别,您可以自动执行第 4 项和第 5 项 - 运行以下宏将所有字段(第一个除外)移动到具有“总和”计算类型的“值”区域:

Sub AddDataFields()
    With ActiveSheet.PivotTables(1)
        Set objPivotFields = .PivotFields
        For i = 2 To objPivotFields.Count
            Set objPivotField = objPivotFields(i)
            Debug.Print objPivotField.Caption
            .AddDataField objPivotField, "Sum of " & objPivotField.Caption, xlSum
        Next
    End With
End Sub
  1. 将出现的“Σ 值”字段从“列标签”拖拽到“行标签”区域,将“类别”从上方拖拽到“行标签”区域。

将“Σ 值”和“类别”字段拖到

  1. 将报告布局更改为表格形式。

更改报告布局

  1. 因此,现在您在一列中得到了物种和长度的总和。

同一列中显示物种和长度总和

  1. 您可以设置标签过滤器来仅检索物种总数。

设置标签过滤器

设置标签过滤器

设置标签过滤器

答案2

这是一个可能对您有帮助的工作示例:

在此处输入图片描述

这可能需要SUMIF(范围,条件,[总和范围])函数的工作原理大致如下:

foreach element in range {
    if element == criteria {
        sum = sum + corresponding element in sum_range
    }
}
return sum

在这种情况下,您可以输入类似以下内容(参考我的屏幕截图):

C9 = SUMIF(1:1;B9;2:2)

它会扫描整个第一行,每当它找到与您在单元格 B11 中输入的内容匹配的标签时,它就会获取第 2 行中的相应值。

对于物种长度总和,您只需使用CONCATENATEExcel 函数即可:

D9 = SUMIF(1:1;CONCATENATE(B9;"_length");2:2)

希望这可以帮助。

哦,还有一件事,为了在拖动时保持引用不变,以便可以填充多个单元格,请$在引用中输入:

C9 = SUMIF($1:$1;B9;$2:$2)

这样,当您向下拖动以引用 B10、B11 等时,只有 B9 会发生变化。

相关内容