web-dev-qa-db-fra.com

Excel extrait une sous-chaîne d'une chaîne

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

Mes cellules ressembleront à quelque chose comme:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Je veux diviser la chaîne au caractère - pour que les cellules deviennent:

ABC
ABCDE
ABCD

Cela devrait être fait avec une formule et non pas VBScript.

J'utilise Excel 2010

MODIFIER

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

22
Pieter van Niekerk

Ce problème peut être décomposé en deux étapes:

  1. Recherchez l'index dans la chaîne du caractère de scission souhaité (dans ce cas, "-" ou " - ").
  2. Obtenez le préfixe sous-chaîne du début du texte d'origine à l'index divisé.

Les commandes FIND et SEARCH renverront chacune l’indice d’un needle donné dans un haystack (FIND est sensible à la casse, SEARCH est insensible à la casse et autorise les caractères génériques). 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’index, nous avons besoin du préfixe source_cell pour effectuer le "split". MID fait justement cela:

MID(source_cell, start_index, num_characters)

En les réunissant, nous avons:

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

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

26
Andrew Coleson

Développe la réponse d'Andrew en fonction de votre modification: pour rechercher la chaîne de caractères à scinder, nous utilisons la fonction FIND. Si la variable FIND ne parvient pas à localiser la chaîne donnée, elle renvoie une erreur #VALUE?. Nous devrons donc vérifier cette valeur et utiliser une valeur de substitution.

Pour vérifier toute valeur d'erreur incluant #VALUE, nous utilisons la fonction ISERROR, ainsi:

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

cela sera vrai si la fonction FIND ne peut pas trouver la chaîne "-" dans la cellule A1. Nous utilisons donc cela pour décider quelle 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, exécutez la fonction MID que Andrew a déjà fournie.

7
Hellion

Merci @AndrewColeson pour votre réponse.

Donc, juste pour ajouter à cela, si vous voulez tout sur le côté droit du -, utilisez ce code:

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

Lequel est:

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

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

Par exemple:

Si tu as:

ABC - DEFG
AB - CDEFGH
...
2
Kevdog777

Voici un moyen très simple d'extraire le cinquième caractère de la 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, puis que la formule suivante

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

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

1
Ken Brown

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

par exemple, si vous voulez convertir -./thumb/hello.jpg en thumb/hello.jpg, 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 à gauche que vous souhaitez supprimer

Si vous souhaitez supprimer du côté droit, utilisez ensuite

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)
0
Alam Zaib