0
votes

Extrait du texte entre plusieurs parenthèses

Aidez-moi s'il vous plaît avec extraire des valeurs entre crochets et former une chaîne de sortie.

échantillon: aspirine (150 mg) + atorvastatine (10 mg) + capsule de clopidogrel (75 mg)

sortie souhaitée: 150 mg + 10 mg + 75 mg

merci


2 commentaires

Qu'en est-il des autres données. Toutes les données sont la même motif?


Selon vos données, il peut être relativement simple de créer un UDF utilisant regex , avec motif: \ d + mg ou incluez le signe plus \ d + mg | \ +


3 Réponses :


2
votes

Vous pouvez essayer en dessous de la formule, mais il est basé sur votre exemple. Besoin de régler num_chars Si la longueur des données dans parenthèses est différente. xxx

 Entrez la description de l'image ici

Vous pouvez utiliser ci-dessous formule si la longueur des données est toujours 4 ou 5 caractères entre parenthèses.

= substitut (MID (A1, recherche ("(", A1) +1,5) & "+" & Mid (A1, recherche ("(", A1, recherche ("(", A1 ) +1) +1,5) & "+" & moyenne (A1, recherche ("(", A1, recherche ("(", A1, recherche ("(", A1) +1) +1, 5), ")", "")


2 commentaires

Merci Harun pour votre précieuse réponse. Dans mes données, la longueur des parenthèses varie et le nombre de parenthèses de chaque cellule peut également varier. Aidez-moi s'il vous plaît avec ces exemples également. Épinephrine (1 mg) Injection | Glimépiride (1 mg) + metformine (500 mg) + comprimé Voglibose (0,2 mg) | Méthylcobalamin (1 mg) + injection de vitamine-B6 (100 mg)


Avez-vous essayé ma deuxième formule?



0
votes

Voici une alternative si vous avez accès à textjoin code> formule. Vous devez entrer en utilisant Ctrl + Maj + Entrée code> (Convertissez-le en une matrice):

=TEXTJOIN("mg + ",TRUE,IFERROR(TRIM(MID(SUBSTITUTE(SUBSTITUTE(A1,"(",REPT(" ",255)),"mg)",REPT(" ",255)),1+255*ROW($A$1:INDEX($A:$A,LEN(A1))),255))*1,""))&"mg"


2 commentaires

Merci Justyna pour votre précieuse réponse. Dans mes données, la longueur des parenthèses varie et le nombre de parenthèses de chaque cellule peut également varier. Aidez-moi s'il vous plaît avec ces exemples également. Épinephrine (1 mg) Injection | Glimépiride (1 mg) + metformine (500 mg) + comprimé Voglibose (0,2 mg) | Méthylcobalamin (1 mg) + injection de vitamine-B6 (100 mg)


Merci pour les commentaires. Ma formule devrait déjà faire exactement cela :) Voir le Capture d'écran



2
votes

Une autre option d'utilisation de la fonction TextJoin et avec l'index + filtrexml pour forcer la formule de matrice dans une formule de formule plus courte et normale,

et la fonction FilterXML renvoient une matrice sans erreur / cellules vides, donc l'IFError () n'est pas nécessaire

puis dans B2 , formule copiée en baisse: xxx

 Entrez la description de l'image ici


2 commentaires

Joli. Utilisation très intelligente de index et filtrexml :-)


@Bosco_yip Cette solution a fonctionné parfaitement ... merci Bosco_yip ...