Table des matières
Ce tutoriel explique la syntaxe des fonctions FIND et SEARCH d'Excel et fournit des exemples de formules pour des utilisations avancées non triviales.
Dans le dernier article, nous avons abordé les principes de base de la boîte de dialogue Rechercher et remplacer d'Excel. Cependant, dans de nombreuses situations, vous pouvez souhaiter qu'Excel trouve et extraie automatiquement des données d'autres cellules en fonction de vos critères. Examinons donc de plus près ce que les fonctions de recherche d'Excel ont à offrir.
Fonction FIND d'Excel
La fonction FIND dans Excel est utilisée pour renvoyer la position d'un caractère ou d'une sous-chaîne spécifique dans une chaîne de texte.
La syntaxe de la fonction Recherche d'Excel est la suivante :
FIND(find_text, within_text, [start_num])Les 2 premiers arguments sont obligatoires, le dernier est facultatif.
- Trouver_texte - le caractère ou la sous-chaîne que vous voulez trouver.
- Within_text - La chaîne de texte à rechercher. En général, elle est fournie sous forme de référence de cellule, mais vous pouvez également saisir la chaîne directement dans la formule.
- Numéro de départ - un argument facultatif qui spécifie à partir de quel caractère la recherche doit commencer. S'il est omis, la recherche commence à partir du 1er caractère de la chaîne within_text.
Si la fonction FIND ne trouve pas le ou les caractères find_text, une erreur #VALUE ! est renvoyée.
Par exemple, la formule =FIND("d", "find")
renvoie 4 parce que "d" est la 4ème lettre du mot "d". trouver "La formule =FIND("a", "find")
renvoie une erreur car il n'y a pas de "a" dans " trouver ".
Fonction FIND d'Excel : ce qu'il faut retenir !
Pour utiliser correctement une formule FIND dans Excel, gardez à l'esprit les faits simples suivants :
- La fonction FIND est sensible à la casse Si vous recherchez une correspondance non sensible à la casse, utilisez la fonction SEARCH.
- La fonction FIND dans Excel ne permet pas l'utilisation de caractères de remplacement .
- Si l'argument find_text contient plusieurs caractères, la fonction FIND renvoie la position de l'élément le plus proche. premier caractère Par exemple, la formule FIND("ap", "happy") renvoie 2 car "a" est la deuxième lettre du mot "happy".
- Si within_text contient plusieurs occurrences Par exemple, FIND("l", "hello") renvoie 3, qui est la position du premier caractère "l" dans le mot "hello".
- Si find_text est un chaîne vide "", la formule FIND d'Excel renvoie le premier caractère de la chaîne de recherche.
- La fonction FIND d'Excel renvoie le #VALEUR ! erreur si l'un des cas suivants se produit :
- Find_text n'existe pas dans within_text.
- Start_num contient plus de caractères que within_text.
- Start_num est 0 (zéro) ou un nombre négatif.
Fonction SEARCH d'Excel
La fonction SEARCH dans Excel est très similaire à FIND dans la mesure où elle renvoie également l'emplacement d'une sous-chaîne dans une chaîne de texte. Sa syntaxe et ses arguments sont similaires à ceux de FIND :
SEARCH(find_text, within_text, [start_num])Contrairement à FIND, la fonction SEARCH est insensible à la casse et il permet d'utiliser les caractères génériques, comme le montre l'exemple suivant.
Et voici quelques formules de recherche de base dans Excel :
=SEARCH("marché", "supermarché")
renvoie 6 car la sous-chaîne "marché" commence au 6ème caractère du mot "supermarché".
=SEARCH("e", "Excel")
renvoie 1 car "e" est le premier caractère du mot "Excel", sans tenir compte de la casse.
Comme FIND, la fonction SEARCH d'Excel renvoie l'erreur #VALUE ! si :
- La valeur de l'argument find_text est introuvable.
- L'argument start_num est supérieur à la longueur de within_text.
- Start_num est égal ou inférieur à zéro.
Plus loin dans ce tutoriel, vous trouverez quelques exemples de formules plus significatifs qui démontrent comment utiliser la fonction SEARCH dans les feuilles de calcul Excel.
Excel FIND vs. Excel SEARCH
Comme nous l'avons déjà mentionné, les fonctions FIND et SEARCH d'Excel sont très similaires en termes de syntaxe et d'utilisation, mais elles présentent quelques différences.
1. recherche sensible à la casse (FIND) et recherche insensible à la casse (SEARCH)
La différence la plus essentielle entre les fonctions Excel SEARCH et FIND est que SEARCH n'est pas sensible à la casse, alors que FIND est sensible à la casse.
Par exemple, SEARCH("e", "Excel") renvoie 1 car il ignore la casse de "E", tandis que FIND("e", "Excel") renvoie 4 car il tient compte de la casse.
2. recherche avec des caractères génériques
Contrairement à FIND, la fonction Excel SEARCH accepte les caractères génériques dans l'argument find_text :
- Un point d'interrogation ( ?) correspond à un caractère, et
- Un astérisque (*) correspond à toute série de caractères.
Pour voir comment cela fonctionne sur des données réelles, prenez l'exemple suivant :
Comme vous le voyez dans la capture d'écran ci-dessus, la formule SEARCH("function*2013", A2) renvoie la position du premier caractère ("f") de la sous-chaîne si la chaîne de texte visée par l'argument within_text contient à la fois "function" et "2013", quel que soit le nombre de caractères intermédiaires.
Conseil : pour trouver un point d'interrogation ( ?) ou un astérisque (*), tapez un tilde (~) avant le caractère correspondant.
Exemples de formules Excel FIND et SEARCH
Dans la pratique, les fonctions FIND et SEARCH d'Excel sont rarement utilisées seules. En général, vous les utilisez en combinaison avec d'autres fonctions telles que MID, LEFT ou RIGHT. Les exemples de formules suivants illustrent quelques utilisations réelles.
Exemple 1 : Trouver une chaîne de caractères précédant ou suivant un caractère donné.
Cet exemple montre comment vous pouvez rechercher et extraire tous les caractères d'une chaîne de texte à gauche ou à droite d'un caractère spécifique. Pour faciliter la compréhension, prenez l'exemple suivant.
Supposons que vous ayez une colonne de noms (colonne A) et que vous souhaitiez faire apparaître le prénom et le nom dans des colonnes distinctes.
Pour obtenir le prénom, vous pouvez utiliser FIND (ou SEARCH) en conjonction avec la fonction LEFT :
=GAUCHE(A2, FIND(" ", A2)-1)
ou
=GAUCHE(A2, SEARCH(" ", A2)-1)
Comme vous le savez probablement, la fonction LEFT d'Excel renvoie le nombre spécifié de caractères les plus à gauche dans une chaîne de caractères. Vous utilisez la fonction FIND pour déterminer la position d'un espace (" ") afin que la fonction LEFT sache combien de caractères extraire. Ensuite, vous soustrayez 1 de la position de l'espace car vous ne voulez pas que la valeur renvoyée inclue l'espace.
Pour extraire le nom de famille, utilisez la combinaison des fonctions DROITE, FIND / SEARCH et LEN. La fonction LEN est nécessaire pour obtenir le nombre total de caractères de la chaîne, auquel vous soustrayez la position de l'espace :
=RIGHT(A2,LEN(A2)-FIND(" ",A2))
ou
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2))
La capture d'écran suivante montre le résultat :
Pour des scénarios plus complexes, tels que l'extraction d'un deuxième prénom ou la division de noms avec des suffixes, veuillez consulter la section Comment diviser des cellules dans Excel à l'aide de formules.
Exemple 2 : Trouver la Nième occurrence d'un caractère donné dans une chaîne de texte.
Supposons que vous ayez des chaînes de texte dans la colonne A, par exemple une liste d'unités de stock, et que vous souhaitiez trouver la position de la chaîne de caractères de la colonne A. 2ème La formule suivante fonctionne à merveille :
=FIND("-", A2, FIND("-",A2)+1)
Les deux premiers arguments sont faciles à interpréter : il s'agit de localiser un tiret ("-") dans la cellule A2. Dans le troisième argument (start_num), vous intégrez une autre fonction FIND qui indique à Excel de commencer la recherche à partir du caractère qui suit immédiatement la première occurrence du tiret (FIND("-",A2)+1).
Pour retourner la position de la 3e événement vous intégrez la formule ci-dessus dans l'argument start_num d'une autre fonction FIND et ajoutez 2 à la valeur renvoyée :
=FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2)
Une autre façon, probablement plus simple, de trouver la Nième occurrence d'un caractère donné consiste à utiliser la fonction FIND d'Excel en combinaison avec CHAR et SUBSTITUTE :
=FIND(CHAR(1),SUBSTITUTE(A2,"-",CHAR(1),3))
Où "-" est le caractère en question et "3" est la Nième occurrence que vous voulez trouver.
Dans la formule ci-dessus, la fonction SUBSTITUTE remplace la 3e occurrence du tiret ("-") par CHAR(1), qui est le caractère non imprimable "Début de titre" dans le système ASCII. Au lieu de CHAR(1), vous pouvez utiliser n'importe quel autre caractère non imprimable de 1 à 31. Ensuite, la fonction FIND renvoie la position de ce caractère dans la chaîne de texte. La formule générale est donc la suivante :
FIND(CHAR(1),SUBSTITUTE( cellule , caractère ,CHAR(1), Nième occurrence ))À première vue, il peut sembler que les formules ci-dessus n'ont que peu d'intérêt pratique, mais l'exemple suivant va montrer à quel point elles sont utiles pour résoudre des tâches réelles.
Remarque : n'oubliez pas que la fonction FIND d'Excel est sensible à la casse. Dans notre exemple, cela ne fait aucune différence, mais si vous travaillez avec des lettres et que vous souhaitez obtenir une insensible à la casse utilisez la fonction SEARCH au lieu de FIND.
Exemple 3 : Extraire N caractères après un certain caractère
Pour localiser une sous-chaîne d'une longueur donnée dans une chaîne de texte, utilisez Excel FIND ou Excel SEARCH en combinaison avec la fonction MID. L'exemple suivant montre comment vous pouvez utiliser ces formules en pratique.
Dans notre liste d'UGS, supposons que vous vouliez trouver les 3 premiers caractères qui suivent le premier tiret et les placer dans une autre colonne.
Si le groupe de caractères précédant le premier tiret contient toujours le même nombre d'éléments (par exemple, 2 caractères), il s'agit d'une tâche triviale. Vous pouvez utiliser la fonction MID pour renvoyer 3 caractères d'une chaîne de caractères, en commençant par la position 4 (en sautant les 2 premiers caractères et le tiret) :
=MID(A2, 4, 3)
Traduite en anglais, la formule dit : "Cherchez dans la cellule A2, commencez à extraire à partir du caractère 4, et renvoyez 3 caractères".
Cependant, dans les feuilles de travail réelles, la sous-chaîne que vous devez extraire peut commencer n'importe où dans la chaîne de texte. Dans notre exemple, vous ne savez peut-être pas combien de caractères précèdent le premier tiret. Pour relever ce défi, utilisez la fonction FIND pour déterminer le point de départ de la sous-chaîne que vous voulez extraire.
La formule FIND pour retourner la position du 1er tiret est la suivante :
=FIND("-",A2)
Comme vous voulez commencer par le caractère qui suit le tiret, ajoutez 1 à la valeur retournée et intégrez la fonction ci-dessus dans le deuxième argument (start_num) de la fonction MID :
=MOYEN(A2, FIND("-",A2)+1, 3)
Dans ce scénario, la fonction SEARCH d'Excel fonctionne tout aussi bien :
=MOYEN(A2, SEARCH("-",A2)+1, 3)
C'est génial, mais que se passe-t-il si le groupe de caractères qui suit le premier tiret contient un nombre différent de caractères ? Hmm... cela pourrait poser un problème :
Comme vous le voyez dans la capture d'écran ci-dessus, la formule fonctionne parfaitement pour les lignes 1 et 2. Dans les lignes 4 et 5, le deuxième groupe contient 4 caractères, mais seuls les 3 premiers sont renvoyés. Dans les lignes 6 et 7, il n'y a que 2 caractères dans le deuxième groupe, et notre formule de recherche Excel renvoie donc un tiret à la suite de ceux-ci.
Si vous vouliez retourner tous les caractères entre la 1ère et la 2ème occurrence d'un certain caractère (tiret dans cet exemple), comment procéder ? Voici la réponse :
=MID(A2, FIND("-",A2)+1, FIND("-", A2, FIND("-",A2)+1) - FIND("-",A2)-1)
Pour mieux comprendre cette formule MID, examinons ses arguments un par un :
- 1er argument (texte) : c'est la chaîne de texte contenant les caractères que vous voulez extraire, la cellule A2 dans cet exemple.
- 2ème argument (start_position). Spécifie la position du premier caractère que vous voulez extraire. Vous utilisez la fonction FIND pour localiser le premier tiret dans la chaîne et ajouter 1 à cette valeur parce que vous voulez commencer par le caractère qui suit le tiret : FIND("-",A2)+1.
- 3ème argument (num_chars). Spécifie le nombre de caractères que vous voulez retourner. Dans notre formule, c'est la partie la plus délicate. Vous utilisez deux fonctions FIND (ou SEARCH), l'une détermine la position du premier tiret : FIND("-",A2). Et l'autre retourne la position du second tiret : FIND("-", A2, FIND("-",A2)+1). Ensuite, vous soustrayez la première de la seconde, puis vous soustrayez 1 parce que vous ne voulez pas quepour inclure l'un ou l'autre tiret. Vous obtiendrez ainsi le nombre de caractères entre le premier et le deuxième tiret, ce qui est exactement ce que nous recherchons. Vous introduisez donc cette valeur dans l'argument num_chars de la fonction MID.
De la même manière, vous pouvez retourner 3 caractères après le 2ème tiret :
=MID(A2, FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2), 3)
Ou bien, extraire tous les caractères entre les 2ème et 3ème tirets :
=MID(A2, FIND("-", A2, FIND("-",A2)+1)+1, FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2) - FIND("-", A2, FIND("-",A2)+1)-1)
Exemple 4 : Recherche de texte entre parenthèses
Supposons que vous ayez une longue chaîne de texte dans la colonne A et que vous vouliez trouver et extraire uniquement le texte entre (parenthèses).
Pour ce faire, vous aurez besoin de la fonction MID pour renvoyer le nombre de caractères souhaité d'une chaîne de caractères, et de la fonction FIND ou SEARCH d'Excel pour déterminer où commencer et combien de caractères extraire.
=MID(A2,SEARCH("(",A2)+1, SEARCH(")",A2)-SEARCH("(",A2)-1)
La logique de cette formule est similaire à celle de l'exemple précédent. Une fois encore, la partie la plus complexe est le dernier argument qui indique à la formule le nombre de caractères à renvoyer. Cette expression assez longue dans l'argument num_chars fait ce qui suit :
- Tout d'abord, vous trouvez la position de la parenthèse fermante :
SEARCH(")",A2)
- Ensuite, vous repérez la position de la parenthèse ouvrante :
SEARCH("(",A2)
- Ensuite, vous calculez la différence entre les positions des parenthèses fermantes et ouvrantes et vous soustrayez 1 à ce nombre, car vous ne voulez pas que l'une ou l'autre parenthèse figure dans le résultat :
SEARCH(")",A2)-SEARCH("(",A2))-1
Naturellement, rien ne vous empêche d'utiliser la fonction FIND d'Excel au lieu de SEARCH, car la sensibilité à la casse ou la non sensibilité à la casse ne fait aucune différence dans cet exemple.
Nous espérons que ce tutoriel vous a permis de comprendre comment utiliser les fonctions SEARCH et FIND dans Excel. Dans le prochain tutoriel, nous examinerons de près la fonction REPLACE, alors restez à l'écoute. Merci de votre lecture !
Télécharger le cahier d'exercices
Exemples de formules FIND et SEARCH