Fonctions Nb.Si() et Somme.Si()
Nb.Si.Ens() et Somme.Si.Ens()

Accueil

Nb.Si(champCritère;critère)
Somme.si(champCritère;Critère;champSomme)

NbsiSommesi.xls

La fonction Nb.Si() compte le nombre de cellules vérifiant le critère spécifié.

La fonction Somme.Si() calcule la somme des cellules vérifiant le critère.

Sur l'exemple, le critère est dans la cellule G2

Critère avec un joker *

=NB.SI(Champ;"*FR*") donne le nombre de cellules contenant le code FR

Dans l'exemple ci dessous,nous comptons le nombre de codes contenant FR1,FR2,FR3

En G7 : =NB.SI(B2:B21;"*"&F3)
En H7: =SOMME.SI(B2:B21;"*"&F3;C2:C21

Appartenance à un ensemble

Compter le nombres de cellules qui contiennent aa,bb,cc.

=SOMMEPROD(NB.SI(A2:B12;{"aa";"bb";"cc"}))
=SOMMEPROD(NB.SI(A2:B12;D7:D9))

Sous-Totaux

En C2:=SI(A2<>A3;SOMME.SI($A$2:$A$100;A2;$B$2:$B$100);"")

Somme si montant coché

=SOMME.SI(C3:M3;"þ";B3:L3)

SommeMontantCoché

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Count = 1 And Target.Column <= 13 And Target.Column Mod 2 = 1 And Target.Row >= 3 And Target.Row <= 6 Then
     Target = IIf(Target = "þ", "o", "þ") 'Police Wingdings
  End If
End Sub

Autre exemple

=SOMME.SI($A$2:$G$6;A10;$B$2:$H$6)

SommeSi plusieurs colonnes

On veut la somme des colonnes B,C,D pour lesquelles les lignes contient X en colonne A.

Somme.Si Plusieurs Colonnes

=SOMMEPROD(SOMME.SI(A2:A10;"x";DECALER(B2:B10;;{0;1;2})))

Totaux avec table de correspondance

SommeSi

Sélectionner H2:H5
=totalserieMat(G2:G4;correspond;ident;heures)
Valider avec maj+ctrl+entrée

Function totalserieMat(noSerie, Correspond, ident, heures)
  Application.Volatile
  t = ident
  h = heures
  a = Correspond
  s = noSerie
  Set d1 = CreateObject("Scripting.Dictionary")
  For i = LBound(a) To UBound(a)
    d1(a(i, 2)) = a(i, 1)
  Next i
  Dim ts()
  ReDim ts(LBound(s) To UBound(s))
  For k = LBound(s) To UBound(s)
    For i = LBound(t) To UBound(t)
      tmp = t(i, 1)
      ns = d1(tmp)
        If ns = s(k, 1) Then
           ts(k) = ts(k) + h(i, 1)
        End If
      Next i
   Next k
   totalserieMat = Application.Transpose(ts)
End Function

Nb.Si.Ens(champCritère1;critère1;champCritère2;critère2;...)
Somme.Si.Ens(ChampSomme;champCritère1;Critère1;champCritère2;critère2;...)

Remplace SommeProd() avec plusieurs critères.

NbSiEns SommeSiEns.xls
SommeSiEns
SommeSiEns 2 Crit

En G2: =NB.SI.ENS(E2:E21;">15000";D2:D21;"thomas")
En G7: =SOMME.SI.ENS(E2:E21;E2:E21;">15000";D2:D21;"thomas")
En G11:=SOMME.SI.ENS(E2:E21;C2:C21;"sud";D2:D21;"thomas")
En G16: =NB.SI.ENS(A2:A21;">01/06/2006";D2:D21;"thomas")

Joker *

Somme pour région commençant par X

=SOMME.SI.ENS(E2:E21;C2:C21;"X*")

Avec les tableaux dynamiques structurés, les formules deviennent

En G2: =NB.SI.ENS(Tableau1[CA];">15000";Tableau1[Vendeur];"thomas")
En G7: =SOMME.SI.ENS(Tableau1[CA];Tableau1[CA];">15000";Tableau1[Vendeur];"thomas")
En G11:=SOMME.SI.ENS(Tableau1[CA];Tableau1[Région];"sud";Tableau1[Vendeur];"thomas")
En G16: =NB.SI.ENS(Tableau1[DateVente];">01/06/2006";Tableau1[Vendeur];"thomas")

NbSiEns SommeSiEns.xls

Tableaux dynamiques structurés et Indirect

A2 contient le nom d'un tableau dynamique.

=SOMME.SI.ENS(INDIRECT(A2&"[Nb km]");INDIRECT(A2&"[Dates]");">="&$F$1;INDIRECT(A2&"[Dates]");"<="&$H$1)

Tableaux dynamiques et indirect

Plsieurs valeurs pour le critère

Plusieurs valeurs critère

liste1 ={201;203;205}

=SOMMEPROD(SOMME.SI.ENS(A2:A17;B2:B17;liste1))

2 critères

liste1 ={201;203;205}
liste3 ={0.46.50}

=SOMMEPROD(SOMME.SI.ENS(A2:A17;B2:B17;liste1;C2:C17;liste3))

 

 


Exemples

NbsiSommesi.xls