Formule Excel pour sélectionner uniquement les éléments d'une liste qui sont dans une limite en fonction de critères sélectionnés

0

Nous travaillons avec un tableau de centaines de projets d’une valeur totale bien supérieure à notre budget. Afin de hiérarchiser les projets, nous avons décidé de sélectionner d’abord les projets les plus anciens, en sélectionnant tous les projets jusqu’à ce que notre budget soit respecté.

À titre d'exemple, le tableau ci-dessous indique le projet (colonne A), la date de début (colonne B) et le montant (colonne C). Le montant du budget est fixé à 3 500 dollars, mais peut être modifié, mais la valeur totale des projets est de 5 000 dollars, de sorte que tous ne peuvent être pris. Je voudrais une formule pour la colonne D (remplie ici à titre d’illustration) permettant de sélectionner les projets jusqu’à 3 500 dollars dans l’ordre de la date de début.

entrez la description de l'image ici

J'ai utilisé cette formule en utilisant la formule de Small ou d'autres calculs SUMIF volumineux, mais je n'arrive pas à saisir le montant du budget, qui peut être modifié à tout moment, et à établir un lien entre la date de début et le budget.

Il convient de noter que le tableau actuel comprend 100 lignes de long avec un budget de plus de 10 millions de dollars. Dans l'exemple ci-dessous, la liste exclut le projet 4, car son ajout entraînerait un dépassement du budget, mais dans la pratique, une formule exclut la plupart des éléments, mais inclut: projet 4 en raison de la question de l'arrondi serait bien.

Irmoro
la source

Réponses:

2
D4=IF($C$1>=SUMIFS($C$4:$C$9,$B$4:$B$9,"<=" & B4),C4,"-")

PS

en utilisant la petite formule ou d'autres calculs longs SUMIF

Je vous recommande d'utiliser SUMIFS () uniquement. Il peut être facilement étendu avec des conditions supplémentaires, alors que l'extension de SUMIF () à SUMIFS () doit réorganiser les paramètres de la fonction.

Akina
la source
C'est exactement la formule que je cherchais! Merci pour l'aide rapide Akina - m'a sauvé de nombreuses heures improductives!
lrmoro
Cela ne fonctionnera pas si vous avez une valeur importante qui dépasse la limite de manière cumulative à une date rapprochée. Par exemple, si la date la plus ancienne dépasse 3 500 $, vous devez l’ignorer et commencer à la date suivante (cette formule ne sélectionne aucun projet dans ce cas). Ou, dans les données du PO, substituez 2500 dollars aux 350 dollars du projet 5. Cette formule s'interrompra avec le total des valeurs précédentes. Selon la question, il devrait ignorer la valeur élevée et continuer à sélectionner des projets qualifiés à partir de dates ultérieures.
fixer1234
@ fix1234 Cela correspond exactement à la tâche. Il s’agit de sélectionner d’abord les projets les plus anciens, en sélectionnant tous jusqu’à ce que notre budget soit respecté, alors que vous proposez d’ignorer la condition «projets les plus anciens en premier» et d’éjecter le projet le plus ancien.
Akina
Le problème est qu'il s'arrête à la valeur précédente dès qu'une valeur dépasse le budget. L’exemple du PO ne vient tout simplement pas inclure cette situation. J'ai illustré le problème dans ma réponse.
fixer1234
@ fix1234 C'est le résultat de "nous avons décidé" de l'auteur - bien sûr, il doit prendre en compte cette opportunité. Mais s'il le fait, la tâche va changer.
Akina
2

Akina et Rajesh H ont proposé des solutions élégantes qui fonctionnent comme un exemple dans la question. Cependant, cette approche a un inconvénient en ce qu’ils s’arrêtent trop tôt. Si un grand projet dépasse le budget, seul ou avec le total cumulé, il s’arrête sur le projet précédent au lieu de sauter le projet non éligible et de continuer à rechercher d’autres projets éligibles. Par exemple:

entrez la description de l'image ici

Dans le premier cas, j'ai substitué un grand projet au second par ordre chronologique. Cela aurait poussé le cumul au-dessus du budget, alors le projet s’est arrêté avec un seul projet au lieu d’ajouter les projets ultérieurs qui auraient été dans les limites du budget.

Dans le second cas, j'ai réalisé le premier projet plus important que le budget. Au lieu de l'ignorer et de rechercher plus tard des candidats qualifiés, il s'arrête et ne renvoie rien.

Mon hypothèse est que l'objectif est de remplir le budget en donnant la priorité aux projets les plus anciens. Si un ancien projet ne correspond pas au budget, je suppose que nous ne devrions pas cesser de regarder à ce point.

Voici une solution simple qui ne pose pas ce problème.

entrez la description de l'image ici

J'ai effectué plusieurs substitutions de grande valeur simplement pour illustrer le fonctionnement de la formule.

Dans un premier temps, j'ai trié les données chronologiquement. La première formule (en D4):

=IF(C4>$C$1,"",C4)

Si la première valeur est chronologiquement inférieure au montant budgétaire utilisé, sinon, elle reste nulle. Les autres formules sont copiées à partir de la deuxième valeur (dans D5):

=IF(SUM($D4:D$4)+C5>$C$1,"",C5)

Cela résume toutes les valeurs qualifiantes précédentes qui sont au-dessus et ajoute la valeur pour ce projet. Si le projet dépasse le budget total, il affiche un null, sinon il ajoute la valeur du projet. Il le fait pour chaque projet ultérieur, de sorte que vous obtenez toujours tous les projets éligibles.

Notez que vous pourriez améliorer votre stratégie. Par exemple, vos règles s'arrêtent à 2400 € pour les valeurs de mon exemple. Vous pourriez vous rapprocher du budget en ajoutant d'autres priorités qui permettraient de sélectionner des projets ultérieurs plus importants par rapport aux plus petits. Si votre liste de projets est aussi longue que celle que vous décrivez, il y aura probablement de nombreuses combinaisons proches dans le temps qui pourraient remplir le budget. En allégeant la première contrainte la plus ancienne, vous pourriez vous rapprocher du budget. Vous pouvez également combiner l'âge avec d'autres objectifs tels que la taille du projet; par exemple, complétez quelques grands projets par rapport à plusieurs petits.

fix1234
la source
C'est mieux et répond à toutes les préoccupations exprimées par les commentaires ,,, parfait 10 comments
Rajesh S
0

Ce problème peut être résolu en utilisant également la formule suivante:

=IF(SUMPRODUCT(($C$4:$C$9)*($B$4:$B$9<=B4))<=$C$1,C4,"-")
Rajesh S
la source
Cela ne fonctionnera pas si vous avez une valeur importante qui dépasse la limite de manière cumulative à une date rapprochée. Par exemple, si la date la plus ancienne dépasse 3 500 $, vous devez l’ignorer et commencer à la date suivante (cette formule ne sélectionne aucun projet dans ce cas). Ou, dans les données du PO, substituez 2500 dollars aux 350 dollars du projet 5. Cette formule s'interrompra avec le total des valeurs précédentes. Selon la question, il devrait ignorer la valeur élevée et continuer à sélectionner des projets qualifiés à partir de dates ultérieures.
fixer1234
Merci @ fix1234 pour cette suggestion précieuse, laissez-moi vous relire une fois de plus ,,, comme vous l’avez dit, toute correction / suggestion que vous souhaitez transmettre, puis écrivez simplement. "Si 350 est remplacé par 2500, il sélectionne uniquement le Projet 3. Si 350 est 500 puis il sélectionne Pr1, 2, 3, 5 "! ☺
Rajesh S