J'essaie de trouver une valeur dans un tableau, puis de la renvoyer dans une ligne spécifique de la colonne correspondante.
Dans l'exemple ci-dessous, j'ai besoin de savoir dans quelle baie se trouve la Chevrolet:
Column A Column C Column D Column E
Chevrolet Bay 1 Bay 2 Bay 3
Toyota Ford Saturn
Honda Chevrolet Jaguar
Ferrari Subaru Lexus
Mitsubishi Hundai BMW
Je cherche Chevrolet dans le tableau C2: E5. Une fois qu'il a déterminé que la Chevrolet est dans la colonne D, je dois lui renvoyer la valeur dans D1. Si c'était dans la colonne E, j'en ai besoin pour renvoyer la valeur dans E1.
Toute aide serait grandement appréciée. Merci d'avance.
Essayez ceci Array Formula :
=INDEX($C$1:$E$5,1,SMALL(IF(NOT(ISERROR(SEARCH(A1,$C$1:$E$5))),COLUMN($A:$C),99^99),1))
ou si vous êtes sûr que chaque colonne contient exactement ce qui est recherché, vous pouvez l'écrire comme ceci:
=INDEX($C$1:$E$5,1,SMALL(IF($C$1:$E$5=A1,COLUMN($A:$C),99^99),1))
Entrez la formule dans n’importe quelle cellule en appuyant sur Ctrl+Shitf+Enter.
Comment ça marche?
Notre but ultime est de trouver la colonne qui contient la correspondance:
SEARCH(A1,$C$1:$E$5)
. Il vérifie simplement si l'une des entrées correspond A1 . En fait, cela peut être simplifié à $C$1:$E$5=A1
mais je ne suis pas sûr que toutes les entrées de chaque colonne correspondent exactement à ce qui est dedans A1 .{SEARCH(A1,C1), SEARCH(A1,D1), SEARCH(A1,E1);... SEARCH(A1,E5)}
. Le résultat sera un tableau de nombre (s) et d'erreur (si non a été trouvé). Mais nous ne voulons pas cela, sinon nous retournerons une erreur à chaque fois.IF(NOT(ISERROR(SEARCH(A1,$C$1:$E$5))),COLUMN($A:$C),99^99)
. Cette formule renvoie le numéro de colonne s'il existe une correspondance et un nombre relativement important 99^99
sinon. Le résultat serait: {99^99, 99^99, 99^99, 2, ..., 99^99}
.SMALL
pour renvoyer le plus petit nombre qui, à mon avis, est le plus bas numéro de colonne où une correspondance a été trouvée. Donc, SMALL(IF(NOT(ISERROR(SEARCH(A1,$C$1:$E$5))),COLUMN($A:$C),99^99),1)
renverrait 2. Quelle est la colonne dans laquelle Chevrolet est référencé à $ C $ 1: $ E $ 1 .INDEX($C$1:$E$5,1,2)
.Remarque:99^99
peut être un nombre relativement grand. Pas nécessairement 99^99
. Vous pouvez utiliser la valeur réelle 16385 (le nombre maximal de colonnes dans Excel 2007 et les niveaux supérieurs à +1).
Résultat:
Cette formule le fera en supposant que la valeur de recherche est en A1:
="Bay "&SUMPRODUCT((B2:D5=A1)*(COLUMN(B2:D5)))-1
Vous pouvez facilement l'ajuster pour ajouter plus de lignes et de colonnes.
La formule renvoie le numéro de colonne contenant la valeur de recherche et le concatène avec la baie de Word pour renvoyer le résultat exact souhaité.
La valeur -1 à la fin corrige le fait que la colonne Baie 2 est en réalité la troisième colonne de la feuille de calcul. Vous devrez donc peut-être également ajuster ce décalage.
La fonction SOMMEPROD est beaucoup sous-évaluée. Plus sur ici:
La formule SUMPRODUCT
ci-dessus est parfaite pour ce que je veux.
Par exemple. rechercher l'emplacement - COLUMN
et ROW
- d'une valeur donnée à A1
dans une plage 2D A2:J44
use: =SUMPRODUCT((A2:J44=A!)*(COLUMN(A2:J44))) gives the Absolute* COL#
and : =SUMPRODUCT((A2:J44=A1)*(ROW(A2:J44))) gives the Absolute* ROW#
(pas où il est dans la gamme)
Ceux-ci peuvent ensuite être utilisés dans, par exemple. INDEX()
ou CELL()
etc fonctions.
Une autre réponse rapide et fictive consiste à placer une ligne «fictive» au-dessus de l'ensemble de données, puis à déterminer quelle colonne d'espace réservé a renvoyé le résultat correct.
En B1, vous pouvez mettre l'équation
=MATCH($A$2,B3:B6,0)
Et puis en C1, vous pouvez mettre
=MATCH($A$2,C3:C6,0)
Et ainsi de suite jusqu'à ce que vous ayez couvert toutes les lignes et toutes les colonnes. Modifiez les paramètres B3: B6 et C3: C6 pour refléter les lignes de données réelles dans la colonne donnée.
Maintenant, la formule de tableau amusant qui va effectivement renvoyer la baie. J'ai cette formule matricielle dans la cellule A1 et elle est à la recherche à partir de B1: D1, mais vous pouvez déplacer la cellule A1 n'importe où et la plage B1: D1 doit être composée de toutes les colonnes factices que vous avez créées ci-dessus. En outre, cela suppose que les baies souhaitées figurent dans la ligne 2 (si elles se trouvent dans une autre ligne, modifiez R2C en R # C où # est le numéro de la ligne). Pour entrer correctement, entrez la formule et puis appuyez sur CTRL + MAJ + ENTRÉE.
=INDIRECT("R2C"&SUM(IF(ISERROR(B1:D1),FALSE,B1:D1))+1,FALSE)
Si la formule est correctement saisie, des accolades {} entourent l’équation lorsque vous cliquez une fois sur la cellule.