web-dev-qa-db-fra.com

Excel: rechercher des valeurs min / max dans une colonne parmi celles correspondant à une autre colonne

J'ai un tableau avec deux colonnes, disons A: B. J'ai une liste séparée (dans la colonne D) de toutes les différentes valeurs dans la colonne A. Pour chaque valeur cible dans la colonne D, je veux trouver, parmi toutes les lignes dont le col A correspond à la cible, les valeurs minimum et maximum dans la colonne B. Par exemple, si les données sont comme indiqué,

    col A   col B        col D
 1  7.5     1.00         7.5      1.00   1.20
 2  7.5     1.04         8        1.08   1.45
 3  7.5     1.08         8.5      1.17   1.83
 4  7.5     1.15
 5  7.5     1.20
 6  8       1.08
 7  8       1.13
 8  8       1.20
 9  8       1.29
10  8       1.38
11  8       1.43
12  8       1.45
13  8.5     1.17
14  8.5     1.22
15  8.5     1.26
16  8.5     1.35
17  8.5     1.42
18  8.5     1.51
19  8.5     1.58
20  8.5     1.64
21  8.5     1.69
22  8.5     1.74
23  8.5     1.79
24  8.5     1.83

Je veux avoir des formules qui renvoient les deux dernières colonnes (min et max).

Remarques:

  1. Il serait pratique d'avoir quelque chose qui fonctionne même lorsque l'on se réfère à des plages allant au-delà de la dernière ligne (par exemple, en utilisant $A$8:$A$50 dans les formules, pas nécessairement $A$8:$A$24), afin que de nouvelles données puissent être ajoutées en bas des colonnes A, B et que tout soit mis à jour automatiquement.

  2. Les colonnes A, B contiendront en fait d'autres données, en-têtes, etc., donc je suppose que certaines formules peuvent ne pas fonctionner avec des références à des colonnes entières comme $A:$A.

[~ # ~] edit [~ # ~] : Je viens de trouver quelques articles similaires/liés

Trouver la date MIN/MAX dans une plage si elle correspond aux critères des autres colonnes

Min et Max conditionnels dans Excel 201

sélectionnez la valeur min dans la colonne B pour les mêmes valeurs dans les colonnes A excel?

Étant donné la valeur dans la colonne A, trouver min/max dans la colonne B dans Excel

trouver max ou min dans Excel, avec conditions

7
sancho.s

Ça marche pour moi.

pour min:

=MIN(IF(($A$1:$A$50=D1),($B$1:$B$50)))

pour max:

=MAX(IF(($A$1:$A$50=D1),($B$1:$B$50)))

Notez qu'il s'agit d'une formule matricielle, vous devez donc appuyer sur CTRL+SHIFT+ENTER

6
Dmitry Pavliv

La fonction INDEX peut vous aider à éviter le CSE en créant une formule standard en utilisant des maths à zéro ou à rendre astronomique toute valeur non correspondante selon que vous recherchez un MAX ou MIN résultat.

La formule pseudo-MAXIF est un peu plus simple donc je vais commencer par là.

=MAX(INDEX(B:B*(A:A=D1), , ))

Excel traite toute instruction booléenne TRUE comme 1 et toute FALSE comme lorsqu'elle est utilisée mathématiquement. La multiplication d'une valeur dans la colonne B par 1 laisse la valeur inchangée; multiplier par donnera zéro. La fonction INDEX transmet un tableau de valeurs et de zéros inchangés à la fonction MAX selon qu'ils correspondent ou non aux critères. Le résultat sera la valeur maximale de la colonne B où la colonne A est égale aux critères.

La formule pseudo-MINIF inverse essentiellement le processus en excluant mathématiquement toute valeur non correspondante, ne laissant que des valeurs correspondantes parmi lesquelles choisir un MIN.

=MIN(INDEX(B:B+(A:A<>D1)*1E+99, , ))

Encore une fois, VRAI est 1 et FAUX est mais cette fois, nous l'utilisons pour ajouter 1E + 99 (a 1 suivi de 99 zéros qui ne sera pas le MIN de quoi que ce soit) pour toutes les valeurs non correspondantes. Les valeurs correspondantes auront × 1E + 99 ajoutées, ce qui équivaut à zéro et ne changera pas leur valeur.

MAXIF and MINIF with standard formulas

Les références de plage de cellules de colonne complètes que j'ai utilisées n'ont pas plus d'impact négatif sur le retard de calcul que ne le ferait un formule de tablea similaire.

2
user4039065

Vous pouvez utiliser des formules matricielles pour vous donner les réponses dont vous avez besoin.

Pour le min, vous pouvez utiliser la formule dans la cellule E1:

{=MIN(IF($A:$A=D1,$B:$B))}

et le maximum de la formule pour la cellule F1 est:

{=MAX(IF($A:$A=D1,$B:$B))}

Pour entrer une formule matricielle, vous devez tout saisir sauf les accolades (les accolades), puis appuyez sur les touches Ctrl et Maj lorsque vous appuyez sur la touche Entrée ... cela ajoutera les accolades et la formule sera considérée comme une formule matricielle.

Une fois entré, vous pouvez copier la formule vers le bas pour les autres valeurs correspondantes

Les formules matricielles fonctionnent en calculant chaque combinaison. Il calculera si la valeur dans A1 est la même que D1, et si c'est le cas, elle donnera la valeur de B1, puis si la valeur de A2 est la même que D1, elle donnera la valeur de B2, et ainsi de suite. Cela vous donnera une liste (ou un tableau) de valeurs de la colonne B où la valeur dans A est une correspondance. Le MIN/MAX est ensuite calculé comme normal.

2
Paranoid Android