Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 对Excel中具有重复值的行求和_Vba_Excel_Sum - Fatal编程技术网

Vba 对Excel中具有重复值的行求和

Vba 对Excel中具有重复值的行求和,vba,excel,sum,Vba,Excel,Sum,我需要一个宏来查看下面的数据列表,提供它出现的实例数的计数,并对每个实例的值求和。我知道一个数据透视表或一系列公式可以工作,但我是为一个同事做这件事的,它必须是一个“点击这里”的交易。数据如下: A B Smith 200.00 Dean 100.00 Smith 100.00 Smith 50.00 Wilson 25.00 Dean 25.00 Barry 100.00 最终的结果是这样的 Smith 3 350.00 Dea

我需要一个宏来查看下面的数据列表,提供它出现的实例数的计数,并对每个实例的值求和。我知道一个数据透视表或一系列公式可以工作,但我是为一个同事做这件事的,它必须是一个“点击这里”的交易。数据如下:

A        B
Smith   200.00
Dean    100.00
Smith   100.00
Smith    50.00
Wilson   25.00
Dean     25.00
Barry   100.00
最终的结果是这样的

Smith    3     350.00
Dean     2     125.00
Wilson   1      25.00
Barry    1     100.00

你可以乱动数据吗?您可以按A列对其进行排序,然后使用小计功能,在A列中的更改和B列中的合计,并在B列中显示总计(我认为这是默认设置)

如果你可能不会对它进行排序,那么我认为将它复制到一张新的纸上,并对它的副本进行排序将是最简单的方法


[很抱歉,我忘记了“计数”位。您可以添加一个新的列,用1填充,并以相同的方式进行小计。]

是否允许您乱处理数据?您可以按A列对其进行排序,然后使用小计功能,在A列中的更改和B列中的合计,并在B列中显示总计(我认为这是默认设置)

如果你可能不会对它进行排序,那么我认为将它复制到一张新的纸上,并对它的副本进行排序将是最简单的方法


[很抱歉,我忘记了“计数”位。您可以添加一个新列,用1填充,并以相同的方式进行小计。]

Excel提供了这些功能

sumif()
countif()
数据、筛选器、高级筛选器、仅限唯一记录


提供您所需的一切,您可以录制为宏。

Excel提供了这些功能

sumif()
countif()
数据、筛选器、高级筛选器、仅限唯一记录


为您提供所需的一切,您可以录制为宏。

只需在引用该数据的新工作表中创建透视表。要更新数据透视表,请告诉同事右键单击数据透视表并选择“刷新”。无需宏或代码。

只需在引用该数据的新工作表中创建透视表即可。要更新数据透视表,请告诉同事右键单击数据透视表并选择“刷新”。不需要宏或代码。

录制宏以创建符合您需要的透视表

Sub Macro1()

'Who Cost
'Smith   200
'Dean    100
'Smith   100
'Smith   50
'Wilson  25
'Dean    25
'Barry   100

    Range("A1:B8").Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R8C2").CreatePivotTable TableDestination:="[Book1]Sheet1!R1C4", _
        TableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion10
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Who")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
        "PivotTable1").PivotFields("Cost"), "Sum of Cost", xlSum
    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
        "PivotTable1").PivotFields("Cost"), "Sum of Cost2", xlSum
    Range("E1").Select
    With ActiveSheet.PivotTables("PivotTable1").DataPivotField
        .Orientation = xlColumnField
        .Position = 1
    End With
    Range("E2").Select
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Cost").Function = _
        xlCount
End Sub

录制宏以创建一个可执行所需操作的透视表

Sub Macro1()

'Who Cost
'Smith   200
'Dean    100
'Smith   100
'Smith   50
'Wilson  25
'Dean    25
'Barry   100

    Range("A1:B8").Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R8C2").CreatePivotTable TableDestination:="[Book1]Sheet1!R1C4", _
        TableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion10
    With ActiveSheet.PivotTables("PivotTable1").PivotFields("Who")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
        "PivotTable1").PivotFields("Cost"), "Sum of Cost", xlSum
    ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
        "PivotTable1").PivotFields("Cost"), "Sum of Cost2", xlSum
    Range("E1").Select
    With ActiveSheet.PivotTables("PivotTable1").DataPivotField
        .Orientation = xlColumnField
        .Position = 1
    End With
    Range("E2").Select
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Cost").Function = _
        xlCount
End Sub

JD,你能详细说明一下如何设置吗?谢谢,约翰将测试数据输入C2 enter=COUNTIF($A$2:$A$8,A2)中A列和B列第1到8行,并将其复制到D2 enter=SUMIF($A$2:$A$8,A2,$B$2:$B$8)中下面的单元格中,然后将其复制到Smith每次出现时在C列中得到3次,在D列中得到350次,但您会看到这3次,因为Smith出现了3次。您可以使用高级过滤器隐藏重复项。透视表更容易设置,用户更容易更改,也更不复杂。此外,使用Array Formulas可以更好地满足您的建议。JD,您能否详细说明如何设置它?谢谢,约翰将测试数据输入C2 enter=COUNTIF($A$2:$A$8,A2)中A列和B列第1到8行,并将其复制到D2 enter=SUMIF($A$2:$A$8,A2,$B$2:$B$8)中下面的单元格中,然后将其复制到Smith每次出现时在C列中得到3次,在D列中得到350次,但您会看到这3次,因为Smith出现了3次。您可以使用高级过滤器隐藏重复项。透视表更容易设置,用户更容易更改,也更不复杂。此外,使用数组公式会更好地满足您的建议。让您的同事学习如何使用Excel。我会将其移动到数据库,并使用类似以下内容的查询:
从您的_表中选择名称、计数(*)、总和(价格)、按名称分组
让您的同事学习如何使用Excel。我会将其移动到数据库,并使用类似这样的查询:
从您的_表中选择名称、计数(*)、总和(价格)、按名称分组