J'utilise la formule SUM(B1..B20)
pour additionner une colonne, mais lorsque je filtre les données par une colonne adjacente, la somme n'est pas mise à jour pour refléter uniquement les lignes non filtrées. Comment est-que quelqu'un peut faire ça?
Vous devez utiliser la fonction SOUS-TOTAL . La fonction [~ # ~] sous-total [~ # ~] ignore les lignes qui ont été exclues par un filtre.
La formule ressemblerait à ceci:
=SUBTOTAL(9,B1:B20)
Le numéro de fonction 9 , lui indique d'utiliser la [~ # ~] somme [~ # ~] fonction sur la plage de données B1: B20 .
Si vous êtes ' filtrage' en masquant les lignes, le numéro de fonction doit être mis à jour à 109 .
=SUBTOTAL(109,B1:B20)
Le numéro de fonction 109 est pour la [~ # ~] somme [~ # ~] fonctionne également, mais les lignes masquées sont ignorées.
Si vous n'utilisez pas de filtre automatique (c'est-à-dire que vous avez des lignes masquées manuellement), vous devrez utiliser la fonction AGGREGATE
au lieu de SUBTOTAL
.
Lorsque vous utilisez le filtre automatique pour filtrer les résultats, Excel ne prend même pas la peine de les masquer: il définit simplement la hauteur de la ligne à zéro (jusqu'à 2003 au moins, pas sûr de 2007).
Ainsi, la fonction personnalisée suivante devrait vous donner un débutant pour faire ce que vous voulez (testé avec des entiers, n'ayant joué avec rien d'autre):
Function SumVis(r As Range)
Dim cell As Excel.Range
Dim total As Variant
For Each cell In r.Cells
If cell.Height <> 0 Then
total = total + cell.Value
End If
Next
SumVis = total
End Function
Modifier:
Vous devrez créer un module dans le classeur pour y insérer la fonction, puis vous pouvez simplement l'appeler sur votre feuille comme n'importe quelle autre fonction (= SumVis (A1: A14)). Si vous avez besoin d'aide pour configurer le module, faites-le moi savoir.