2011-11-17 13:40:49 +0000 2011-11-17 13:40:49 +0000
22
22

Extraire la sous-chaîne de la chaîne de caractères en Excel

Je cherche un moyen d'extraire une sous-chaîne de longueur variable d'une chaîne.

Mes cellules ressembleront à quelque chose :

ABC - DEF
ABCDE - DEF
ABCD - ABC

Je veux séparer la chaîne au niveau du caractère -, de sorte que les cellules deviennent :

ABC
ABCDE
ABCD

Cela doit être fait avec une formule et non avec VBScript.

J'utilise Excel 2010

EDIT

J'ai constaté que l'ensemble de données ne contient pas toujours le caractère -, ce qui signifie qu'il ne devrait pas y avoir de changement.

Réponses (5)

26
26
26
2011-11-17 13:51:09 +0000

Ce problème peut être décomposé en deux étapes : Trouvez l'index dans la chaîne de caractères de votre choix (dans ce cas, "-" ou " - "). 2. Obtenez la sous-chaîne du préfixe du début du texte original à l'index fractionné.

Les commandes FIND et SEARCH renvoient chacune l'index d'un needle donné dans un haystack (FIND est sensible à la casse, SEARCH est insensible à la casse et autorise les jokers). Compte tenu de cela, nous avons :

FIND(search_text, source_cell, start_index)

ou dans ce cas :

FIND(" - ", A1, 1)

Une fois que nous avons l'indice, nous avons besoin du préfixe source_cell pour faire le “split”. MID fait exactement cela :

MID(source_cell, start_index, num_characters)

En mettant les deux ensemble, nous avons :

=MID(A1,1,FIND(" - ",A1,1))

avec A1 ayant le texte de ABC - DEF donne ABC.

7
7
7
2011-11-17 15:22:44 +0000

Pour développer la réponse d'Andrew basée sur votre montage : pour trouver la chaîne de caractères à séparer, nous utilisons la fonction FIND. Si la fonction FIND ne parvient pas à localiser la chaîne de caractères donnée, elle renvoie une erreur #VALUE?. Nous devrons donc vérifier cette valeur et utiliser une valeur de substitution à la place.

Pour vérifier toute valeur d'erreur, y compris #VALUE, nous utilisons la fonction ISERROR, donc :

=ISERROR(FIND(" - ", A1, 1))

qui sera vraie si la fonction FIND ne trouve pas le “ - ” dans la cellule A1. Nous l'utilisons donc pour décider de la valeur à utiliser :

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

Cela signifie que si la commande find renvoie une erreur, utilisez la cellule A1 non modifiée. Sinon, faites la fonction MID qu'Andrew a déjà fournie.

2
2
2
2014-08-11 08:59:14 +0000

Merci @AndrewColeson pour votre réponse.

Donc, juste pour ajouter à cela, si vous voulez tout ce qui se trouve à droite du -, utilisez ce code :

=MID(A1,LEN(B1)+3,LEN(A1))

qui est :

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF

Ce code est très utile si vous avez un nombre indéfini de caractères après le -.

Par exemple :

Si vous en avez un :

ABC - DEFG
AB - CDEFGH
...
1
1
1
2014-08-19 22:50:39 +0000

Voici un moyen très simple d'extraire le 5e caractère de gauche d'une chaîne de texte dans Excel :

Supposons que la chaîne de caractères ABCDEFGHIJ soit stockée dans la cellule A1 d'une feuille de calcul Excel, alors la formule suivante

=RIGHT(LEFT(A1,5),1)

produit le 5ème caractère à partir de la gauche dans la chaîne, à savoir E.

0
0
0
2017-05-02 10:15:45 +0000

La formule suivante permet de supprimer une sous-chaîne de [TEXTCOLUMN_1]

par exemple : si vous souhaitez convertir -./thumb/hello.jpg en thumb/hello.jpg alors utilisez la formule suivante

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1] = le nom de la colonne que vous souhaitez modifier[NUM_OF_CHARACTERS] = le nombre de caractères du côté gauche que vous souhaitez supprimer

Si vous souhaitez supprimer le côté droit alors utilisez la formule suivante

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)