J'ai quelques lignes dans Google Sheets qui contiennent des chaînes. Je veux extraire certaines parties de cette chaîne et les entrer dans une autre cellule:
spécifiquement, Je veux extraire des mots/noms commençant par le caractère "@" .
Par exemple, dans la chaîne "Bonjour @Henry comment allez-vous", je veux que la cellule suivante affiche uniquement "@Henry", en supprimant tous les autres mots.
Il y a aussi des cas où il y a plusieurs noms commençant par @ et je voudrais que tous ces noms soient retournés (de préférence dans des colonnes séparées).
Est-ce que quelqu'un peut m'aider avec ça?
Modifier: feuille de calcul factice ci-dessous:
https://docs.google.com/spreadsheets/d/1TupcKRHHi94Q3OLmZS0-eEWNwbEZF90gjymoyem3GFI/edit?usp=sharing
La fonction LEFT
vous permet de trouver des valeurs à partir de la sommation de gauche à droite et la fonction RIGHT
fait exactement le contraire. La fonction FIND
est de trouver à quelle position exactement le texte que vous voulez. Il commence automatiquement à compter les caractères pour LEFT
ou RIGHT
. Et la fonction LEN
consiste à compter la valeur totale des caractères qui existent dans une cellule, vous devez donc l'utiliser dans la fonction RIGHT
, car vous devez compter la valeur totale des caractères moins le position que vous cherchez à séparer.
Vous pouvez également utiliser ceci formule robuste unique dans la cellule B2
:
=IFERROR(ArrayFormula(if(LEN(A2:A),TRIM(SPLIT(
REGEXREPLACE(TRANSPOSE(SPLIT(TRANSPOSE(ArrayFormula(join("♣︎", A2:A))),"♣︎")),"(?:.?(@[A-Z][a-z]\b))|(.*)","$1"&" ")," ")
),"")),"")
ne formule encore plus simple peut être utilisé si vous n'avez pas de lignes vides entre vos réponses:
=ArrayFormula(TRIM(SPLIT(
REGEXREPLACE(TRANSPOSE(SPLIT(TRANSPOSE(ArrayFormula(join("♣︎", A2:A))),"♣︎")),"(?:.?(@[A-Z][a-z]\b))|(.*)","$1"&" ")," ")))
En utilisant split
+ a filter
vous pouvez extraire les mots avec le modèle dont vous avez besoin: @ + upper case + whatever
=transpose(
filter(
transpose(SPLIT(A2," ")),
REGEXMATCH(transpose(SPLIT(A2," ")),"@[A-Z]")
)
)