2012-07-02 5 views
0

J'essaie de faire quelque chose que je ne suis pas sûr de savoir comment faire.Excel VBA Looping en utilisant des critères et 2 feuilles

J'ai 2 feuilles de propagation sheet1 et sheet2

Sur la feuille 1 J'ai
la colonne A une liste de numéros (SalespersonsID)
Colonne B la somme de la colonne B sur la feuille 2

SalespersonID | Total sales 
--------------+------------ 
      1 | 
      2 | 

sur la feuille 2 J'ai
La colonne A a le salesidentsID
La colonne B a combien de widgets ont été vendus par le vendeur dans cette transaction
colonne C a TypeofWidget
Colonne D a Lieu

SalespersonID | Units sold | Type | Location 
--------------+------------+------+----------- 
      1 |   1 | Foo | London 
      1 |   2 | Bar | London 
      2 |   4 | Foo | Berlin 
      1 |   1 | Bar | Madrid 

Je ne sais pas comment faire cela, mais je dois insérer le total de nombre de widgets vendus par un vendeur en utilisant les colonnes de Feuil2 C et D ainsi que la feuille L'identifiant de vente de 1 comme critère et l'insérer dans la colonne B de la feuille 1?

SalespersonID | Total sales 
--------------+------------ 
      1 |   4 
      2 |   4 

je peux le faire dans une cellule en utilisant la fonction SUMIFS mais j'ai plus de 500 lignes à passer par le 5 feuilles au total.

+0

I * pense * Je l'ai bien interprété la description pour afficher les données d'échantillon. @ user1497083 s'il vous plaît modifier à nouveau la question si quelque chose ne va pas. –

+0

Cela ressemble à un bon cas d'utilisation pour un tableau croisé dynamique –

+0

Vous recherchez la fonction * Tableau croisé dynamique * dans Excel. –

Répondre

0

c'est un sous vba qui font le travail nécessaire, il suffit de mettre en vba et lancez:

sub totalSales() 
    Dim i As Integer 'used to loop on sheet1 
    Dim j As Integer 'used to loop on sheet2 
    Dim spID As Integer 'the SalepersonID in Sheets1 
    Dim spID2 As Integer 'the SalepersonID in Sheets2 
    Dim rows1 as Integer 'rows count in sheet1 
    Dim rows2 as Integer 'rows count in sheet2 
    Dim total as Integer 'to count sales per person 

    'getting rows count 
    rows1=Worksheets("sheet1").Cells(Rows.Count, "A").End(xlUp).Row 'rows count in sheet1 
    rows2=Worksheets("sheet2").Cells(Rows.Count, "A").End(xlUp).Row 'rows count in sheet2 

    For i = 1 To rows1 
     spID = Worksheets("sheet1").Cells(i, "A").Value) 'the salepersonID 
     total=0 'initializing counter 
     for j= 1 to rows2 
      spID2 = Worksheets("sheet2").Cells(j, "A").Value 
      If (UserID=UserID2) Then 
       total = total + Worksheets("sheet2").Cells(j, "B").Value 
      End If 
     next j 
     Worksheets("sheet2").Cells(i, "B").Value = total ' Storing the total in sheet1 
    next i 

End Sub 
Questions connexes