答案1
不过,数据透视表可以帮上忙。源数据应放在行中,就像数据库中的记录一样。以下是数据透视表设置的示例。
- 复制源范围。
- 粘贴并转置。
- 在转置数据上构建数据透视表。
- 将类别名称“A”、“B”和“C”从顶部拖到“值”区域。
- 将每个类别名称的计算类型从“计数”更改为“总和”。
第 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
- 将出现的“Σ 值”字段从“列标签”拖拽到“行标签”区域,将“类别”从上方拖拽到“行标签”区域。
- 将报告布局更改为表格形式。
- 因此,现在您在一列中得到了物种和长度的总和。
- 您可以设置标签过滤器来仅检索物种总数。
答案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 行中的相应值。
对于物种长度总和,您只需使用CONCATENATE
Excel 函数即可:
D9 = SUMIF(1:1;CONCATENATE(B9;"_length");2:2)
希望这可以帮助。
哦,还有一件事,为了在拖动时保持引用不变,以便可以填充多个单元格,请$
在引用中输入:
C9 = SUMIF($1:$1;B9;$2:$2)
这样,当您向下拖动以引用 B10、B11 等时,只有 B9 会发生变化。