C'est une vieille question, mais une solution pour ceux qui utilisent Excel 2016 ou une version plus récente est que vous pouvez supprimer le besoin de structures imbriquées if en utilisant le nouveau IFS( condition1, return1 [,condition2, return2] ...)
conditionnel.
Je l'ai formaté pour le rendre visuellement plus clair sur la façon de l'utiliser pour le cas de cette question:
=IFS(
ISERROR(SEARCH("String1",A1))=FALSE,"Something1",
ISERROR(SEARCH("String2",A1))=FALSE,"Something2",
ISERROR(SEARCH("String3",A1))=FALSE,"Something3"
)
Étant donné que SEARCH
renvoie une erreur si une chaîne n'est pas trouvée, je l'ai enveloppée d'un ISERROR(...)=FALSE
pour vérifier la vérité, puis renvoyer la valeur souhaitée. Ce serait génial si SEARCH
renvoyé 0 au lieu d'une erreur pour la lisibilité, mais c'est juste comment cela fonctionne malheureusement.
Une autre note importante est celle IFS
qui rendra le match trouvé en premier et donc l'ordre est important. Par exemple, si mes chaînes étaient Surf, Surfing, Surfs
comme String1,String2,String3
ci-dessus et que ma chaîne de cellules l'était, Surfing
elle correspondrait au premier terme au lieu du second en raison de la sous-chaîne Surf
. Les dénominateurs communs doivent donc être les derniers de la liste. Mon IFS
devrait être ordonné Surfing, Surfs, Surf
de fonctionner correctement (échange Surfing
et Surfs
fonctionnerait également dans cet exemple simple), mais Surf
devrait être le dernier.