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

Excel estrae una sottostringa da una stringa

Sto cercando un modo per estrarre una sottostringa di lunghezza variabile da una stringa.

Le mie celle saranno qualcosa come:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Voglio dividere la stringa al carattere -, così le celle diventeranno:

ABC
ABCDE
ABCD

Questo dovrebbe essere fatto con una formula e non con VBScript.

Sto usando Excel 2010

EDIT

Ho scoperto che il set di dati non contiene sempre il carattere -, il che significa che non ci dovrebbero essere cambiamenti.

Risposte (5)

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

Questo problema può essere suddiviso in due passi:

  1. Trovate l'indice nella stringa del vostro carattere di divisione desiderato (in questo caso, "-" o " - ").
  2. Prendi la sottostringa del prefisso dall'inizio del testo originale all'indice di divisione.

I comandi FIND e SEARCH restituiscono ciascuno l'indice di un dato needle in un haystack (FIND è case-sensitive, SEARCH è case-insensitive e permette i caratteri jolly). Dato questo, abbiamo:

FIND(search_text, source_cell, start_index)

o in questo caso:

FIND(" - ", A1, 1)

Una volta che abbiamo l'indice, abbiamo bisogno del prefisso di source_cell per fare lo “split”. MID fa proprio questo:

MID(source_cell, start_index, num_characters)

Mettendoli insieme, abbiamo:

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

con A1 che ha il testo di ABC - DEFABC.

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

Espandendo la risposta di Andrew sulla base della tua modifica: per trovare la stringa di caratteri da dividere, stiamo usando la funzione FIND. Se la FIND non riesce a trovare la stringa data, restituisce un errore #VALUE?. Quindi dovremo controllare questo valore e usare invece un valore sostitutivo.

Per controllare qualsiasi valore di errore compreso #VALUE, usiamo la funzione ISERROR, quindi:

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

che sarà vero se la funzione FIND non trova la stringa “ - ” nella cella A1. Quindi usiamo questo per decidere quale valore usare:

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

Questo dice che se il comando find restituisce un errore, usa la cella A1 non modificata. Altrimenti, fai la funzione MID che Andrew ha già fornito.

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

Grazie @AndrewColeson per la tua risposta.

Quindi, solo per aggiungere a questo, se vuoi tutto sul lato destro del -, usa questo codice:

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

Che è:

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

Questo codice è ottimo per se hai un numero indefinito di caratteri dopo lo -.

Per esempio:

Se hai:

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

Ecco un modo molto semplice per estrarre il 5° carattere da sinistra da una stringa di testo in Excel:

Supponiamo che la stringa di caratteri ABCDEFGHIJ sia memorizzata nella cella A1 di un foglio di calcolo Excel, allora la seguente formula

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

produce il quinto carattere da sinistra nella stringa, cioè E.

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

La seguente formula rimuoverà una sottostringa da [TEXTCOLUMN_1]

es: se volete convertire -./thumb/hello.jpg in thumb/hello.jpg allora usate la seguente formula

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

[TEXTCOLUMN_1] = il nome della colonna che volete cambiare[NUM_OF_CHARACTERS] = numero di caratteri dal lato sinistro che volete rimuovere

Se volete rimuovere dal lato destro allora usate

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