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.
Ce problème peut être décomposé en deux étapes:
"-"
ou " - "
).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
.
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.
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
...
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
.
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]),)