2017-08-22 2 views
-1

J'ai une feuille ("DATA"), où j'ai une table avec 3 colonnes et 162 ensembles de données (lignes) + l'en-tête. Voilà comment le tableau ressemble à:Comment calculer la moyenne basée sur la condition dans Excel en utilisant vba

enter image description here

J'ai besoin pour calculer la moyenne de la colonne C (« État de formation [de%] »), basé sur le nom du site dans la colonne A (« Site »).

J'ai créé une macro qui crée une table dans une nouvelle feuille ("Vue d'ensemble"), où chaque site est indiqué une seule fois, et maintenant je dois calculer la moyenne de "Statut de formation" pour chaque site.

Table Finale:

enter image description here

Comment pourrais-je obtenir les bonnes valeurs dans la table finale sur la base des données de la table d'origine, plus considérer la condition que la moyenne doit être calculée pour chaque site prénom? Bien sûr, il n'y a pas la même quantité d'ensembles de données pour chaque site (par exemple "BRU-Logistique" a 3 ensembles de données et "FRA-Logistique" a 15 ensembles de données).

J'ai trouvé quelques codes vba, mais honnêtement, je n'ai vraiment pas compris la logique derrière et je n'ai pas réussi à passer mon besoin.

Eh bien, mon code n'est pas complet. J'ai juste essayé de commencer, mais je me suis perdu.

Sub Average() 

Dim rng As Range 
Dim LastRow As Long 
Dim r1 As Long, r2 As Long 
Dim lNoRows As Long 

LastRow = Sheets("DATA").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
Set rng = Sheets("DATA").Range("A2:C" & LastRow) 
lNoRows = rng.Row.Count 

For r1 = 1 To lNoRows 
If rng(r1, 1) = rng(r2, 1) And r1 = r2 Then 

End Sub 

Merci beaucoup!

+0

Utilisez AVERAGEIF() –

+1

Veuillez partager votre code afin que nous puissions vous aider à identifier le problème. Merci –

Répondre

0

Vous n'avez pas besoin de VBA pour cela. Dans la cellule D2, mettez =AVERAGEIF(A:A,A2,C:C), puis recopiez.

+0

Un grand merci pour votre réponse. J'ai également essayé cette solution, mais ce n'est pas en cosidérant le nom du site. Je veux dire, quand je change de tri dans la table finale, alors les valeurs ne correspondent pas au bon nom de site. Probablement, cela fonctionnerait en combinant vlookup. –

+0

Poster une capture d'écran? AVERAGEIF devrait certainement fonctionner. – gattoun