web-dev-qa-db-fra.com

Fractionner une chaîne avec Excel

J'ai une chaîne au format suivant:

StockCode Country Date Price equity

par exemple:

  • 1 hk 10/31/12 C70.5 equity
  • 101 hk 11/21/13 P63 equity
  • 388 hk 10/17/12 P100 equity

Je peux extraire Date par cette commande Excel: 

LEFT(RIGHT(RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1)),
LEN(RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1)))-FIND(" ",
RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1)))),FIND(" ",
RIGHT(RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1)),
LEN(RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1)))-FIND(" ",
RIGHT(LEFT(A1,LEN(A1)-7),LEN(LEFT(A1,LEN(A1)-7))-FIND(" ",A1))))))

(sauts de ligne pour la lisibilité)

résultat: 10/31/12

Quelqu'un a une meilleure solution pour cela?

voici quelques uns de mes codes:

  • comment obtenir "C" et "P":

    TRIM(MID(A1,IFERROR(FIND("P",A1),FIND("C",A1)),1))
    
  • comment obtenir le prix de grève:

    TRIM(SUBSTITUTE(RIGHT(A1,LEN(A1)-IFERROR(FIND("P",A1),
    FIND("C",A1))),"equity",""))
    
10

Essayez ceci, je pense que cela devrait fonctionner pour toutes les dates avec une année de 2 caractères:

=TRIM(MID(A1,FIND("/",A1)-2,8))
13
John

Je vous recommande d'exécuter Text to Columns à partir de l'onglet Données. Choisissez Délimité et indiquez un espace comme délimiteur. Cela placera votre chaîne dans cinq colonnes, la troisième étant la date et vous pourrez ensuite utiliser librement les données directement.

Sinon, je regarderais l'exemple de Lajos :( (=TRIM(MID(A1,FIND("!^!",SUBSTITUTE(A1," ","!^!",2)),8))) ou la réponse de John.

4
Daniel

Si vous pouvez utiliser une macro UDF, c'est simple. 

Function STR_SPLIT(str as String, sep as String, n as Long)
    Dim Arr() as String
    Arr = Split(str, sep)
    STR_SPLIT = Arr(n - 1)
End Function

str est la chaîne à scinder, SEP est le caractère à scinder - "" dans votre cas - et n est le numéro de colonne que vous recherchez. So = STR_SPLIT (A1, "", 3) renverrait la date par exemple. 

4
Jamie Bull

Vous pouvez scinder chaque partie en colonnes dans Excel en accédant à Données> Texte en colonnes et en utilisant l'espace comme délimiteur.

3
seanjacob

Cette formule devrait également donner le résultat souhaité, même si l'année comporte 4 caractères.

=TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),198,99))

1
barry houdini

Votre date est entre le deuxième et le troisième espace dans tous vos exemples. Vous pouvez remplacer votre troisième espace par "! ^!" par exemple, puis obtenez la sous-chaîne jusqu'à la première occurrence de "! ^!". Après cela, il ne vous reste plus qu'à extraire la sous-chaîne après le deuxième espace. Veuillez lire plus ici .

1
Lajos Arpad

Merci John

voici quelques uns de mes codes:

comment obtenir "C" et "P":

TRIM (MID (A1, IFERROR (TROUVER ("P", A1), TROUVER ("C", A1)), 1))

comment obtenir le prix de grève:

TRIM (SUBSTITUTE (RIGHT (A1, LEN (A1) -IFERROR (FIND ( "P", A1), trouver ( "C", A1))), "l'équité", ""))

0