Code VBA pour l'instruction SUMIF - Nécessité d'intégrer des conditions supplémentaires

0

J'essaie de me frayer un chemin dans certains scripts VBA. J'ai trouvé ce code en ligne qui permet à une fonction SumIf de se produire lorsqu'une seule condition est remplie. Je voudrais l'élargir à deux peut-être trois conditions.

    Function SumIfVisible(rng As Range, condition, rngSum As Range) As Double  
Dim i As Long
 For i = 1 To rngSum.Count

If rng(i) = condition And rngSum(i).EntireRow.Hidden = False Then
  SumIfVisible = SumIfVisible + rngSum(i)
End If
 Next I
End Function

Pour clarifier, je voudrais répondre à plusieurs conditions dans plusieurs gammes . Ie condition1 dans la plage D2: D200 et la condition2 et la condition 3 dans la plage H2: H200 .

En outre, les plages peuvent avoir des valeurs partiellement différentes dans le sens spécifique, mais remplissent la condition de manière globale, c.-à-d. Condition1 = "Jan", la plage D2: D200 contient des dates telles que "1er janvier, 2 janvier, 3 janvier", etc. Toutes les dates dans le "" répondre à la condition. SUMIFS ne permet pas une sélection de chaîne tronquée pour les valeurs de cellule. Ie sélectionne chaque ligne qui a "Jan" même si elle contient d'autres valeurs comme "1,2,3"

S'il vous plaît aider!

déguisement
la source
Le code ci-dessus additionnera uniquement les cellules visibles, voulez-vous cela aussi?
Linga
1
Avez-vous accès à SUMIFS()?
Kyle
1
Avez-vous essayé d'utiliser la SUBTOTALfonction dans Excel? Il peut ignorer les valeurs cachées et peut être associé SUMPRODUCTà la création de votre addition conditionnelle pour les lignes visibles uniquement. Cela peut éliminer le besoin de votre FDU.
Ingénieur Toast
AGGREGATE peut aussi s'avérer utile si vous avez XL2010 ou>.
Scott Holtzman
@ Kyle Merci, mec, j'ai contourné cette fonction pour une raison quelconque ... Je pense m'être égaré en essayant de créer des fonctions INDEX et MATCH.
clearguise

Réponses:

0

En supposant que vos données contiennent du texte et non des dates formatées d-mmm, ceci devrait vous aider à démarrer:

=SUMIFS(B1:B2,A1:A2,"*Jan")

Ou si vous avez des dates réelles:

=SUMIFS(B1:B2,A1:A2,">=1/1/2016",A1:A2,"<=1/31/2016")

B1: B2 est la plage à additionner et A1: A2 est la plage de critères.

Notez que SUMIFS()comprend les lignes cachées, donc si l' exclusion de cellules cachées fait partie de vos critères dont vous aurez besoin SUBTOTAL()ou AGGREGATE()comme mentionné ci - dessus.

Kyle
la source