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 SEARCHrenvoie une erreur si une chaîne n'est pas trouvée, je l'ai enveloppée d'un ISERROR(...)=FALSEpour vérifier la vérité, puis renvoyer la valeur souhaitée. Ce serait génial si SEARCHrenvoyé 0 au lieu d'une erreur pour la lisibilité, mais c'est juste comment cela fonctionne malheureusement.
Une autre note importante est celle IFSqui rendra le match trouvé en premier et donc l'ordre est important. Par exemple, si mes chaînes étaient Surf, Surfing, Surfscomme String1,String2,String3ci-dessus et que ma chaîne de cellules l'était, Surfingelle 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 IFSdevrait être ordonné Surfing, Surfs, Surfde fonctionner correctement (échange Surfinget Surfsfonctionnerait également dans cet exemple simple), mais Surfdevrait être le dernier.