Excel estrae la sottostringa dalla stringa


22

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

Le mie cellule saranno simili a:

ABC - DEF
ABCDE - DEF
ABCD - ABC

Voglio dividere la stringa sul -carattere, quindi le celle diventeranno:

ABC
ABCDE
ABCD

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

Sto usando Excel 2010

MODIFICARE

Ho scoperto che il set di dati non contiene sempre il -personaggio, il che significa che non dovrebbero esserci cambiamenti.

Risposte:


26

Questo problema può essere suddiviso in due passaggi:

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

La FINDe SEARCHcomandi ognuno avrebbe restituire l'indice di un dato needlein un haystack( FINDè case-sensitive, SEARCHè case-insensitive e permette jolly). Detto 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_cellfare la "divisione". MIDfa solo questo:

MID(source_cell, start_index, num_characters)

Mettendoli insieme, abbiamo:

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

con A1 con testo di ABC - DEFABC.


7

Espandendo la risposta di Andrew in base alla tua modifica: per trovare la stringa di caratteri in cui dividere, stiamo usando la FINDfunzione. Se FINDnon riesce a individuare la stringa fornita, restituisce un #VALUE?errore. Quindi dovremo verificare questo valore e utilizzare invece un valore sostitutivo.

Per verificare l'eventuale valore di errore incluso #VALUE, utilizziamo la ISERRORfunzione, quindi:

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

ciò sarà vero se la FINDfunzione non riesce a trovare la stringa "-" nella cella A1. Quindi usiamo quello per decidere quale valore usare:

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

Ciò significa che se il comando find restituisce un errore, utilizzare la cella A1 non modificata. Altrimenti, esegui la MIDfunzione che Andrew ha già fornito.


2

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 se hai un numero indefinito di caratteri dopo il -.

Per esempio:

Se hai:

ABC - DEFG
AB - CDEFGH
...

questo fa il trucco anche =MID(a1,FIND("-",a1)+1,LEN(a1))senza riferimenti "extra-cellulari")
Mikey

1

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 ABCDEFGHIJsia memorizzata nella cella A1 in un foglio di calcolo Excel, quindi la seguente formula

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

produce il 5 ° carattere da sinistra nella stringa, vale a dire E.


(Non esiste alcuna MIDfunzione in Excel? Sono sicuro che esiste in Visual Basic legacy e sarebbe qualcosa del genere=MID(A1, 5, 1) )
Valmiky Arquissandas

0

La seguente formula rimuoverà una sottostringa da [TEXTCOLUMN_1]

ad esempio: se si desidera convertire -./thumb/hello.jpgper thumb/hello.jpgutilizzare quindi la seguente formula

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

[TEXTCOLUMN_1]= il nome della colonna che si desidera modificare [NUM_OF_CHARACTERS]= numero di caratteri dal lato sinistro che si desidera rimuovere

Se si desidera rimuovere dal lato destro, utilizzare quanto segue

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.