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

Excel estrae una sottostringa da una stringa

Advertisement

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.

Advertisement

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
Advertisement
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
Advertisement
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]),)
Advertisement