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。我会将其移动到数据库,并使用类似这样的查询:从您的_表中选择名称、计数(*)、总和(价格)、按名称分组