2010-02-15 7 views
1

J'ai besoin d'une macro pour regarder la liste de données ci-dessous, fournir un décompte du nombre d'instances apparaissant et additionner la valeur de chacune d'elles. Je sais qu'un tableau croisé dynamique ou une série de formules pourrait fonctionner, mais je le fais pour un collègue et il doit s'agir d'un accord «un clic ici». Les données sont les suivantes:Additionner des lignes avec des valeurs dupliquées dans Excel

A  B 
Smith 200.00 
Dean 100.00 
Smith 100.00 
Smith 50.00 
Wilson 25.00 
Dean  25.00 
Barry 100.00 

Le résultat final ressemblerait à ceci

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

Demandez à votre collègue d'apprendre à utiliser Excel. – AMissico

+0

Je le déplacer vers une base de données, et utiliser une requête quelque chose comme: 'select nom, count (*), somme (prix) de your_table, groupe par nom' –

Répondre

-1

Êtes-vous autorisé à jouer avec les données? Vous pouvez le trier par la colonne A, puis utiliser la fonctionnalité de sous-total, les changements dans la colonne A, la colonne de somme B et le total dans la colonne B (qui, je pense, sont les paramètres par défaut de toute façon).

Si vous ne pouvez pas le trier alors je penserais littéralement juste le copier sur une nouvelle feuille et trier la copie de celui-ci serait le moyen le plus facile.

[Désolé, j'ai oublié le bit "count". Vous pouvez ajouter une nouvelle colonne remplie de 1 et sous-total de la même manière.]

0

Excel fournit ces choses

sumif()
COUNTIF()
données, filtre, filtre avancé, sans doublon

Vous donne tout ce dont vous avez besoin, vous pouvez enregistrer comme une macro.

+0

JD, pourriez-vous élaborer sur la façon de régler ce en haut? Merci, John – john

+1

Mettez vos données de test dans les colonnes A et les lignes B 1 à 8 En C2 entrer = COUNTIF ($ A $ 2: $ A $ 8, A2) et le copier vers le bas pour les cellules ci-dessous En D2 entrer = SUMIF ($ A $ 2: $ A $ 8, A2, $ B $ 2: $ B $ 8) et le copier Ce que vous avez alors chaque fois que Smith apparaît vous obtenez 3 dans la colonne C et 350 dans la colonne D, mais vous voyez que 3 fois parce que Smith apparaît 3 fois. Vous pouvez utiliser le filtre avancé pour masquer les doublons. –

+0

Tableau croisé dynamique est beaucoup plus facile à configurer, plus facile pour l'utilisateur de changer, et moins compliqué. De plus, votre suggestion serait mieux servie en utilisant des formules de tableau. – AMissico

3

Il suffit de créer le tableau croisé dynamique dans une nouvelle feuille, qui fait référence à ces données. Pour le mettre à jour, dites à votre collègue de cliquer avec le bouton droit sur le tableau croisé dynamique et sélectionnez Actualiser. Pas besoin de macro ou de code pour ça.

2

Macro enregistrée pour créer un tableau croisé dynamique qui fait ce que vous voulez.

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 
Questions connexes