Condividi:        

[Excel] Estrarre singole parole da cella alfanumerica

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel] Estrarre singole parole da cella alfanumerica

Postdi sbyggy » 13/07/07 10:13

Presento una richiesta simile ma non uguale a quella del Thread http://www.pc-facile.com/forum/viewtopic.php?t=61729&start=0&postdays=0&postorder=asc&highlight= [Excel] Estrazione prima parola da una cella alfanumerica

La mia esigenza è di estrarre tutte le singole parole alfanumeriche che sono contenute in un'unica cella separate tra loro da diversi spazi vuoti variabili, nell'esempio qui sotto gli spazi tra un termine e l'altro è solo 1 in quanto eliminati automaticamente dalla formattazione di questo Topic.
Esempio:
Contenuto Cella A1
9967001Z 100 200 Grigio Wantsonic Inc. SUB 1 270.737 x 183.498 0.05 0 57 0.39 0.274 0.274
Cosa voglio ottenere:
Cella B1: 9967001Z
Cella B2: 100
Cella B3: 200
Cella B4: Grigio
Cella B5: Wantsonic
Cella B6: Inc.
Cella B7: SUB
Cella B8: 1
Cella B9: 270.737
Cella B10: x
Cella B11: 183.498
Cella B12: 0.05
Cella B13: 0
Cella B14: 57
Cella B15: 0.39
Cella B16: 0.274
Cella B17: 0.274
sbyggy
Utente Junior
 
Post: 38
Iscritto il: 22/10/06 11:10

Sponsor
 

Postdi maxmula » 13/07/07 23:01

Ciao sbyggy,
volevo risponderti oggi dal lavoro ma poi... ho avuto da fare :)

Allora, puoi fare così:

- prendi la stringona che corrisponde ad una riga intera
- Cerchi il prmo spazio
- Tagli via quello che sta a sinistra e se non è un semplice spazio lo scrivi dove vuoi (qui ti propongo un array).


In codice viene più o meno così:

Codice: Seleziona tutto
Sub SEPARA_CODICI()

STRINGONA = "AAAAA BBB CCCC   DDD       EEEE RR"


Dim CODICI(1 To 100)

COPIA_STRINGA = STRINGONA 'facciamo una copia, così la possiamo "maltrattare" :-P
SPAZIO = InStr(1, COPIA_STRINGA, " ") 'CERCA IL PUNTO IN CUI SI TROVA IL PRIMO SPAZIO
INDICE_CODICI = 1

While SPAZIO > O
     LUNGH = Len(COPIA_STRINGA)
     SINISTRA = Left(COPIA_STRINGA, SPAZIO - 1)
     COPIA_STRINGA = Right(COPIA_STRINGA, LUNGH - SPAZIO)
     
     If SPAZIO > 1 Then
           CODICI(INDICE_CODICI) = SINISTRA
           INDICE_CODICI = INDICE_CODICI + 1
     End If
     
     SPAZIO = InStr(1, COPIA_STRINGA, " ") 'CERCHIAMO IL PROSSIMO SPAZIO
Wend

End Sub



Al termine della routine ti trovi con un array in cui sono memorizzati i codici. A questo punto ti basta un ciclo FOR...Next con x da 1 a INDICE_CODICI e li puoi salvare dove vuoi.

Ti consiglio di importare questa routine in un modulo VBA excel e poi eseguirlo passo-passo (premi F8) monitorando le variabili COPIA_STRINGA, SPAZIO, SINISTRA e CODICI (visualizza barra degli strumenti "Debug", evidenzia nel listato il nome che vuoi tracciare e clicca sull'icona con gli occhiali), così puoi vedere come funziona e farti un'idea.

Spero di esserti stato d'aiuto!
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Postdi sbyggy » 14/07/07 09:17

Grazie Maxmula, appena posso provo, anche se mi risulterà un pò ostico visto che non sono un prgrammatore VBA nè di altri linguaggi.
Infatti speravo che tale risultato si potesse ottenere esclusivamente con i comandi e funzioni di excel, come nel Thread che ho segnalato ad inizio topic.
Comunque ci provo, se proprio ho troppi problemi ti richiederò sempre in questa pagina.
sbyggy
Utente Junior
 
Post: 38
Iscritto il: 22/10/06 11:10

Postdi maxmula » 14/07/07 22:41

Per programmare VBA non serve aver "mangiato libri di cibernetica & insalate di matematica!" :P.
Premi F11 per far comparire l'editor, poi scegli Inserisci/Modulo ed incolli la routine che ho postato.

In Office, poi, puoi anche non saper programmare: basta registrare una macro, entrare in VBA Editor e vedere quali istruzioni corrispondono alle operazioni che hai fatto... E' così che ho imparato!

Comunque,
un modo "brutale" per non usare VBA, può essere questo: salvi la stringa in un file di testo (.txt), lo chiudi e poi lo riapri in excel come testo "delimitato".
Come delimitatore metti il carattere " " (spazio) e scegli di considerare delimitatori successivi come uno solo.

Provo a vedere cosa si può fare con le funzioni del foglio di calcolo, senza dover passare per il salvataggio intermedio (possibile ma di certo non lineare né "leggero").

Ti faccio sape' ;)
Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Postdi Anthony47 » 16/07/07 00:37

Ciao sbyggy, ciao Max.
Anche io propendo per il comando “testo in colonne”: selezioni la cella, Menu /Dati /Testo in colonna; come gia’ suggerito da Max spunti “Delimitati”/Avanti; “spazio” e “considera delimitatori .. come uno solo”/Avanti; infine puoi forzare la formattazione dei campi come da elenco (selezioni la colonna, spunti la formattazione da applicare); Fine.

In questo modo avrai messo le varie stringhe nelle colonne adiacenti quella di partenza, quindi in orizzontale; es in A1:Q1. Se le vuoi in verticale puoi usare, in aggiunta, la funzione Matr.trasposta:
-in B2 metti la formula
Codice: Seleziona tutto
=MATR.TRASPOSTA(A1:Q1)

-selezioni le celle B2:B18, F2 (edit formula), confermi la formula con Contr-Maiusc-Enter
(la formula ha infatti un formato “matrice”)
Puoi selezionare piu’ colonne in orizzontale (es A1:Z1) e altrettante righe in verticale (es. B2:B27), al massimo verranno “trasposti” degli “zero”.

Se la stringa che devi dividere e’ importata, e’ molto probabile che tutta la fase di “testo in colonna” la puoi inserire gia’ nella fase di importazione.

Quanto detto e’ uno spunto, non una soluzione finita; ragionaci su e fatti sentire.

Anche la macro non e’ da scartare come soluzione; e se (per sbyggy) non sei un mago in vba tieni presente che:
-piu’ tardi cominci, piu’ tardi diventi un mago;
-almeno il 50% delle mie istruzioni nascono tramite “registra macro”; insomma e’ meno difficile di quello che sembra.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi sbyggy » 16/07/07 10:14

Grazie a tutti, mi avete dato molti consigli/soluzioni utili, nel giro di pochi giorni vi farò sapere i risultati.
sbyggy
Utente Junior
 
Post: 38
Iscritto il: 22/10/06 11:10

Postdi maxmula » 16/07/07 16:18

Girellando nella guida in linea ho trovato la funzione TRIM, che dovrebbe rimuovere gli spazi multipli all'inizio dentro una stringa.

Forse può fare al caso tuo?

Ehm... Anthony47... come si chiama nella versione italiana? :oops:


Per estrarre i singoli codici puoi andare a cercare la posizione in cui si trova il primo spazio (SEARCH) e calcolare la lunghezza della stringa di partenza, dopodiché quello che si trova a sinistra è il tuo codice, quello che sta a destra è la stringa da cui ricavare il secondo codice (con procedura analoga)

Ho fatto un piccolo foglio di esempio: purtroppo non lo posso allegare al messaggio... però se mi dici il tuo indirizzo email te lo posso mandare (18 KB)

Ciao!

MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Postdi Anthony47 » 17/07/07 01:10

TRIM = ANNULLA.SPAZI

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi Anthony47 » 17/07/07 01:12

... ma se gli mandi il file, sbyggy legge gia' la funzione corretta.

Ri-ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19438
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi maxmula » 20/07/07 22:41

Ciao Sbyggy,
non ho più avuto notizie... spero che tu sia riuscito a risolvere!

Se no, basta che mi mandi un messaggio privato con un tuo indirizzo email... e ti servo il file di cui ti dicevo.

Alla prossima,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [Excel] Estrarre singole parole da cella alfanumerica

Postdi sbyggy » 21/09/08 09:13

A più di un anno di distanza, mi sono accorto che mi si chiedeva l'esito dei consigli sovrastanti: la risposta è certamente positiva, quanto detto sopra è stato tutto molto utile per risolvere la mia questione.
Quindi un ringraziamento a Maxmula e Anthony47.
sbyggy
Utente Junior
 
Post: 38
Iscritto il: 22/10/06 11:10


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Estrarre singole parole da cella alfanumerica":


Chi c’è in linea

Visitano il forum: Marius44 e 54 ospiti