0
votes

Extraire la chaîne par position

J'ai une ligne avec des pays séparés par ; . Ceci est un exemple situé dans une cellule: ro; être; au titre; cn; de; britannique; es; hu; nl; SE; à; el; cz .

D'autre part, j'ai une autre cellule avec des organisations, également séparées avec ; : E.g org1; Org2; Org3 ... et il a la même position que les pays.

Maintenant, je dois trouver la position d'un pays (par exemple de ) et extraire l'organisation dans la même position dans l'autre cellule.

Ce que j'ai identifié est la position en utilisant la formule trouver . Maintenant, j'ai besoin d'extraire l'organisation séparée par des virgules, mais je ne sais pas comment le faire. J'ai essayé gauche , droite fonctionner ... aussi indirect .

Tous les commentaires seraient appréciés.


3 commentaires

Si vous avez l'option, divisez les données au format multicellulaire, puis utilisez une fonction comme vlookup ou index & correspondant .


S'il vous plaît poster vos efforts à ce jour.


Avec la première liste dans A1 et 2nd in a2 , essayez quelque chose comme: = index (filtrexml (" " & substitut (A2, "; "," ") &" "", "// s"), trouver ("D", A1) -Len (Substitut e ( À gauche (A1, trouve ("de", A1)), ";" "," ")) . Si vous n'avez pas accès à filtrexml , vous pouvez trouver une autre option utile pour extraire le nième mot ici


5 Réponses :


-2
votes

Utilisation Split, correspondance et index Strong> Excel Formulas Vous pouvez l'obtenir

    A               B

1   COUNTRIES       A;B;C;D;E
2   ORG             Org1;Org2;Org3;Org4;Org5
3   Search CODE     B
4   Result          Org2 (=INDEX(SPLIT(B2, ";"), MATCH(B3, SPLIT(B1, ";"))))


7 commentaires

Avez-vous testé la fonction divisée ? J'ai testé la formule et ça ne marche pas.


Oui, j'ai testé et fonctionne bien, capture d'écran pour votre référence ibb.co/mb5z4rt


Cela ne fonctionne pas dans Excel. Je soupçonne que vous travaillez avec Google Feuilles.


Oui, je travaille avec Google Feuilles, pouvez-vous expliquer quelle erreur vous obtenez avec Excel alors?


Excel n'accepte pas la fonction qu'il met en évidence le mot divisé et renvoie le message cette fonction n'est pas valide .


Ok merci, ça marche avec Google Feuilles et j'utilise Excel très moins


@RameShn Veuillez noter que Google Feuilles et Excel sont 2 programmes complètement différents avec une syntaxe différente. Il pourrait y avoir des similitudes mais à la fin, ils sont complètement indépendants et différents.



1
votes

C'est simple avec la macro écrite dans VBA: xxx

et voici ma configuration de la feuille:

 Entrez la description de l'image ici


1 commentaires

Merci beaucoup, Michal!



1
votes

Si vous avez Excel 2013 ou plus, vous pouvez utiliser une approche FilterXML comme indiqué par @JVDV. Pour toutes les versions que vous pouvez utiliser:

= recherche (2,1 / (garniture (moyenne (substitut (substitut (";" & b2 ";", report ("", 99)), rangée ($ 1: 10 $) * 99 * 99 , 99)) = B4), garniture (moyenne (substitut (substitut (";" & b3, ";", report ("", 99)), rangée ($ 1: 10 $) * 99,99))) < / code>

La cellule B2 contient ro; être; au titre de; cn; de; UK; es; hu; nl; se; à; el; cz La cellule B3 détient org1; Org2; Org3 .. Cell B4 tient la clé que vous recherchez par ex. Ro.

On suppose que toutes les entrées de la liste des sources sont uniques et que 10 entrées sont divisées. Si vous avez plus, vous devez modifier rangée ($ 1: $ 1: 10 $) à des entrées maximales adaptées à votre cas comme 1 $: 99 $) etc.


1 commentaires

Merci beaucoup Shrivallabha.redij !!



1
votes

Parce que vous avez marqué la question avec VBA, vous pouvez utiliser un UDF pour obtenir la valeur.

Ce UDF a eu trois arguments:

  1. cellule de pays
  2. cellule d'orgs
  3. pays que vous recherchez XXX

    Le test que j'ai fait:

    Entrez la description de l'image ici

    in cellule d2 ma formule est = get_org (A1; A2; d1)


1 commentaires

@Peh je ne peux pas formater la partie de code comme je le fais dans les dernières années. Qu'est-ce que je fais mal?



1
votes

juste pour le plaisir de cela.

Il peut être fait avec la formule Excel de base aussi longtemps que vous ne voulez vraiment jamais regarder la formule et ne vous souciez pas de la performance. P>

 Comment ça regarde dans Excel p>

et voici toutes les formules utilisées P>

=FIND(";" & B4 &";";";" & B2 & ";")
=LEFT(B2;C6)
=LEN(C7)-LEN(SUBSTITUTE(C7;";";""))
=SUBSTITUTE(B3;";";"|";C8)
=FIND("|";C9)
=FIND(";";B3&";";C10+1)
=MID(C9;C10+1;C11-C10-1)

=MID(B3;FIND("|";SUBSTITUTE(B3;";";"|";LEN(LEFT(B2; FIND(";" & B4 &";";";" & B2 & ";")))-LEN(SUBSTITUTE(LEFT(B2; FIND(";" & B4 &";";";" & B2 & ";"));";";""))))+1;FIND(";";B3&";";FIND("|";SUBSTITUTE(B3;";";"|";LEN(LEFT(B2; FIND(";" & B4 &";";";" & B2 & ";")))-LEN(SUBSTITUTE(LEFT(B2; FIND(";" & B4 &";";";" & B2 & ";"));";";""))))+1)-FIND("|";SUBSTITUTE(B3;";";"|";LEN(LEFT(B2; FIND(";" & B4 &";";";" & B2 & ";")))-LEN(SUBSTITUTE(LEFT(B2; FIND(";" & B4 &";";";" & B2 & ";"));";";""))))-1)


0 commentaires