表中相同项目的总和

时间:2019-04-25 06:58:16

标签: excel vba

在Excel表中,我想通过累加求和 如下图所示。 [超过两行] 我想从找到项目的行的第一个位置获取其他列的值

items-cumulation many columns

3 个答案:

答案 0 :(得分:4)

解决方案1-公式

对于第1条:

=SUMIF($A$8:$A$21,"=Article 1",$B$8:$B$21)

对于第2条:

=SUMIF($A$8:$A$21,"=Article 2",$B$8:$B$21)

解决方案2-数据透视表” ,如Pᴇʜ建议

  1. 命名三列: 第一栏:“标题” 第二:“价值” 第三:“税”
  2. 使用数据(A7:C21)选择范围。确保您也选择了标题。
  3. 插入-数据透视表-确定
  4. 在“值”框中拖动“值”和“税”,在“行”框中拖动“标题”

数据

enter image description here

结果

enter image description here

答案 1 :(得分:2)

使用数据透视表

enter image description here

  • 选择您的数据
  • 点击插入›数据透视表
  • 选中“文章”和“编号”两个框

答案 2 :(得分:0)

由于这个问题带有一个标签,因此脚本字典可以很快速地得出摘要。

Option Explicit

Sub SumArticles()

    Dim i As Long, arr As Variant, dic As Object

    'set up a dictionary object
    Set dic = CreateObject("scripting.dictionary")

    'work with Sheet1
    With Worksheets("sheet1")

        'collect values from worksheet
        arr = .Range(.Cells(8, "A"), .Cells(.Rows.Count, "B").End(xlUp)).Value2

        'loop through array, summing to dictionary items
        For i = LBound(arr, 1) To UBound(arr, 1)
            'shorthand overwrite dictionary add method
            dic.Item(arr(i, 1)) = dic.Item(arr(i, 1)) + arr(i, 2)
        Next i

        'put dictionary keys and items back on worksheet
        .Cells(8, "E").Resize(dic.Count, 1) = Application.Transpose(dic.keys)
        .Cells(8, "F").Resize(dic.Count, 1) = Application.Transpose(dic.items)

    End With

End Sub