1 votes

Additionner les valeurs des entrées qualifiantes sans double comptage dans Excel

Je dispose d'une collection de chaînes de texte auxquelles est associée une valeur numérique. Je dois additionner les valeurs numériques associées pour les entrées qui se qualifient. Une entrée de texte est qualifiée si elle contient une ou plusieurs chaînes cibles désignées. Une entrée peut potentiellement contenir plusieurs chaînes cibles, ou une chaîne cible plus d'une fois. Cependant, je ne veux additionner la valeur associée qu'une seule fois pour l'entrée si celle-ci se qualifie en contenant une correspondance avec l'une des cibles ou des combinaisons de cibles.

Par exemple, disons que les cellules A1:A3 contiennent respectivement apple , banana , pear et B1:B3 contiennent chacun le nombre 1 . Mes cibles de recherche sont a y p . Les trois entrées de texte sont qualifiées parce qu'elles contiennent chacune au moins une occurrence d'au moins une des cibles. La somme des valeurs associées dans la colonne B devrait donner un résultat de 3 .

J'ai essayé de le faire en utilisant SUMIF et des cibles génériques. Ma formule pour cet exemple est la suivante :

=SUM(SUMIF(A:A, {"*a*", "*p*"}, B:B))

Cependant, cette méthode comptabilise deux fois les entrées qui correspondent à plus d'une cible. Dans ce cas, les trois contiennent a et deux contiennent également p Il produit donc une somme de 5 .

Comment puis-je y parvenir sans compter deux fois les entrées ?

1voto

XOR LX Points 1127

Il est plus souple d'avoir vos critères dans des cellules réelles de la feuille de calcul, plutôt que de les coder en dur dans une formule.

Si vous utilisez un vertical une série de cellules contiguës (par ex. H1:H2 ) à cette fin, et en supposant que Gamme es un vertical vous pouvez utiliser la méthode suivante formule de tableau** :

=SUM(IF(MMULT(0+ISNUMBER(SEARCH(TRANSPOSE(Criteria),Range)),ROW(Criteria)^0)>0,Values))

Si vous insistez pour que les critères soient inclus dans la formule, alors.. :

=SUM(IF(MMULT(0+ISNUMBER(SEARCH({"p","a"},Range)),{1;1})>0,Values))

Salutations

1voto

Altealice Points 2457

Voici une solution relativement simple. Avec les valeurs associées, tous les 1 il produit le résultat souhaité de 3 Mais j'ai attribué des valeurs différentes pour montrer que les valeurs correctes sont sélectionnées, et j'ai inclus une entrée qui ne correspond pas pour faire bonne mesure.

enter image description here

La liste des entrées se trouve dans la colonne C et leurs valeurs associées dans la colonne D. Le résultat se trouve dans E1.

Seules certaines fonctions peuvent utiliser des caractères génériques. Cette fonction utilise donc SEARCH pour la chaîne cible.

La méthode habituelle pour traiter plusieurs critères OR consiste à additionner les résultats de chaque test. Toutefois, cette méthode entraîne un double comptage lorsque les éléments peuvent répondre à plusieurs critères. Pour résoudre ce problème, les tests des critères agrégés sont vérifiés pour voir si la somme est supérieure à zéro, et c'est ce qui est utilisé avec la valeur associée.

Le traitement des chaînes de recherche cibles sous forme de tableau se complique, car les fonctions courantes utilisées pour ce type de formules calculent un résultat pour l'ensemble du tableau avant de l'appliquer au terme suivant. J'ai donc traité chaque critère séparément. Pour plus de critères, il suffit d'ajouter un autre ISNUMBER(SEARCH("target",range)) pour chacun d'entre eux à l'intérieur des parenthèses précédant l'expression >0 test.

SUMPRODUCT effectue les calculs de type tableau avec une formule normale, sans tableau.

La formule dans E1 est la suivante :

=SUMPRODUCT(((ISNUMBER(SEARCH("p",C1:C4))+ISNUMBER(SEARCH("a",C1:C4)))>0)*D1:D4)

0voto

Raystafarian Points 21292

Je pensais vraiment que ce serait un SUMPRODUCT(-- mais je n'arrive pas à en faire fonctionner une. Celle-ci devrait pourtant fonctionner -

=SUM(IF(FREQUENCY(IF(NOT(ISERR(SEARCH({"d","g"},A2:A10))),ROW(A2:A10)),ROW(A2:A10))>0,1))

Où le {"d","g"} sera votre tableau de chaînes de recherche.

Il s'agit d'une formule de tableau, donc une fois que vous l'avez introduite, vous devez appuyer sur ctrl + shft + entr et des parenthèses doivent apparaître dans la barre de formule autour de la fonction entière.

Notez que cela ne fonctionnera que si vous effectuez une recherche sur une seule colonne.

Il est possible que cela ne fonctionne pas aussi bien, compte tenu des caractères génériques. Peut-être avez-vous besoin d'une expression rationnelle ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X