Condividi:        

Estrarre frasi da una cella

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

Estrarre frasi da una cella

Postdi AleRosa » 09/11/16 09:46

Ciao a tutti,
ho bisogno di una mano per estrarre una "riga" da una cella che contiene 5 righe.
Dunque, nel Foglio Excel 1, la colonna E contiene 5.000 righe. Ogni cella è composta da 5 righe (concatena testo a capo) come segue.
E1:
"s1: io mi chiamo Matteo
s2: vorrei mangiare una pizza
s3: sento calco
s4: ho molta fame
s5: grazie e arrivederci
"
E2:
"s1: caldo
s2: freddo
s3: miele
s4: casa
s5: cane"
E3
"s1: bibita
s2: mangiare
s3: devo fare i compiti
s4: devo riposare
s5: grazie mamma"

Avrei bisogno di qualcosa (sia essa una formula o una macro) che mi cancelli automaticamente la frasi di s1, s3, s4 e s4 lasciando SOLO s2.
Il risultato dovrà essere:
E1:
"
s2: vorrei mangiare una pizza
"

E2:
"
s2: freddo
"

E3:
"
s2: mangiare
"

non importa che "l'estrazione" avvenga nella stessa cella o in una cella diversa.
In seguito, dovrò utilizzare la stessa formula per estrarre questa volta s1, cancellando s2, s3, s4 ed s5. E cosi via.
Potete darmi una mano? Grazie mille a tutti in anticipo!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Sponsor
 

Re: Estrarre frasi da una cella

Postdi recalcatiiti » 09/11/16 10:55

Ciao AleRosa, benvenuto.

Possiamo aiutarti, ma ritengo necessario un file d'esempio. Allega file tramite filedropper.com con situazione iniziale e risultato sperato.

Ciao
Excel 2021
recalcatiiti
Utente Junior
 
Post: 95
Iscritto il: 12/10/15 15:03

Re: Estrarre frasi da una cella

Postdi AleRosa » 09/11/16 11:37

Ciao recalcatiiti!
Grazie per la risposta e grazie per avermi informato riguardo a filedropper (non lo conoscevo affatto). Ho condiviso un file di esempio qui: http://www.filedropper.com/prova_12
Grazie!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Estrarre frasi da una cella

Postdi patel » 09/11/16 12:41

Codice: Seleziona tutto
Sub a()
LR = Cells(Rows.Count, "A").End(xlUp).Row
For r = 2 To LR
  s = Cells(r, 1)
  arr = Split(s, vbLf)
  Cells(r, 2) = arr(1)
Next
End Sub
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: Estrarre frasi da una cella

Postdi AleRosa » 09/11/16 13:02

Ciao Patel, grazie mille per questo codice!
Potresti cortesemente dirmi dove lo dovrei mettere (in excel)? E spiegarmi nello specifico cosa vuol dire? Perché quello che bisogna fare per s2, lo devo fare poi per s3.
Grazie mille!

Meglio: ho cliccato su "visual basic" e creato una macro.
Il problema è che mi esce l'errore: "indice non incluso nell'intervallo".
Il file reale sul quale devo lavorare contiene 27 righe e, ovviamente, il testo da estrarre è diverso da quello nell'esempio. Forse bisogna modificare qualcosa nel codice? Grazie grazie grazie!
Grazie mille

Aggiornamento 2: Ho fatto!!!! :) era che il codice mi escludeva la prima riga, quindi mi sono dovuta posizionare sulla riga 2 e creare il visual basic! Grazie Grazie Grazie infinite!!!!
Avrei 2 altre domande, per piace.
1. Come faccio se volessi inserire anche la riga 1?
2. Cosa devo modificare nel caso in cui io voglia estrarre tutte le righe R5 e nel caso in cui l'intervallo fosse diverso?
Grazie grazie grazie!!!!! Siete dei geni!!!!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Estrarre frasi da una cella

Postdi Anthony47 » 09/11/16 23:24

Prendendo lo spunto dalla ottima soluzione di patel, ti propongo questa funzione che risponde alle tue nuove domande:
Codice: Seleziona tutto
Function peppa(ByVal inPt As String, Optional ByVal getLines As String = "1") As String
Dim mySplit, myOut As String, I As Long
'
mySplit = Split(inPt & " ", vbLf, , vbBinaryCompare)
If UBound(mySplit) > 0 Then
    For I = 1 To Len(getLines)
        myOut = myOut & mySplit(CLng(Mid(getLines, I, 1)) - 1) & vbLf
    Next I
    peppa = Left(myOut, Len(myOut) - 1)
Else
    peppa = inPt
End If
End Function

Mettila in un modulo standard del vba; all'uopo, partendo da Excel
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato

A questo punto torna sul tuo foglio di lavoro e, se ad esempio vuoi ottenere solo la riga2 di cella A2 usa la formula
Codice: Seleziona tutto
=peppa(A2;2)
Se invece che 2 vuoi le righe 3, 5 e 7 usa la formula
Codice: Seleziona tutto
=peppa(A2;357)


Questa soluzione gestisce ma 9 righe, non so se e' soddisfacente.

Come tutte le formule standard puoi copiarla in tutte le altre celle in cui ti serve.

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

Re: Estrarre frasi da una cella

Postdi AleRosa » 10/11/16 09:12

Ciao Anthony,
grazie mille per questa nuova soluzione. Mi funziona la prima parte (che a questo punto, suppongo, può essere usata direttamente anche per le altre occorrenze, variando l'ultimo numero in 3, 4, 5 [non ho provato], ma non la seconda [=peppa(A2;357)] - quest'ultima mi restituisce come errore #valore.
Stavo pensando di fare un'altra cosa, per accelerare ancora di più il processo di estrazione e per cercare di utilizzare quante meno formule possibile [considerando che non sono utente esperta]. Cosa dovrei fare se volessi fare qualcosa del genere [estrazione automatica di s1, s2, s3, s4 ed s5 - in celle separate]. Ti allego un file di esempio http://www.filedropper.com/prova_13

Grazie ancora a tutti per il tempo che mi dedicate e per le superbe soluzioni!!!!

NOTA: 9 righe non sono sufficienti, per i documenti sono generalmente composti da più di 30 righe [a volte anche fino a 4.000]. Grazie!

NOTA1: Anthony, perché mi hai detto che gestisce solo 9 righe? Non è vero? utilizzando il modulo + la funzione =peppa(A2;2) - sostituendo 2 con 3, 5, o 4 a seconda delle esigenze [o semplicemente inserendo questa funzione nelle celle adiacenti] si estrae all'infinito :) forse mi sfugge qualcosa?
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Estrarre frasi da una cella

Postdi Anthony47 » 10/11/16 15:15

Se la formula =peppa(A2;357) ti restituisce #VALORE e' perche' probabilmente non hai l'elemento N°7 o N°5 nella tua cella.
Comunque, visto che puoi avere anche 4000 (??!!) righe nella stessa cella allora non conviene continuare su quella soluzione; anche perche' (contemporaneamente) mi pare che il tuo obiettivo sia quello di "spacchettare" TUTTE le righe di ogni singola cella, spalmandole sulle colonne a destra.
Per questo il mio suggerimento e' di usare il comando "Testo-in-colonna":
-selezioni tutta la colonna A
-Menu /tab Dati /Testo in colonne (in gruppo Strumenti dati)
-scegli Delimitato e premi Avanti
-spunta "Altro", posizionati nel box adiacente digiti (tramite tastierino numerico) Alt-0-1-0 (premi Alt, premi in sequenza 0 1 0, rilasci Alt); se non hai tastierino numerico prova con Cont-j
-premi Fine

Se vuoi mantenere la colonna A originale, allora copiala e incollala in B, poi "spacchetta" la colonna B con la stessa procedura.

Se questa operazione e' da eseguire con una certa frequenza allora puoi Autoregistrare una macro mentre fai le operazioni, in modo che quando devi ripeterle ti bastera' avviare quella macro.
Per le istruzioni su come registrare una macro:
viewtopic.php?f=26&t=103893&p=622593#p622593

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

Re: Estrarre frasi da una cella

Postdi AleRosa » 10/11/16 15:36

Ciao Anthony! "visto che puoi avere anche 4000 (??!!) righe nella stessa cella" = intendevo che devo estrarre 4000 righe NON nella stessa cella ma di Excel! Nella cella ci sono sempre 5 righe da estrarre :)
La funzione aggiuntiva che vi proponi non l'ho ancora provata veramente! Vedo di provarla nel più breve tempo possibile. La prima soluzione che mi hai fornito va alla grande invece!
Su questa "funzione" ho un problema. Quando creo il modulo con il codice che mi hai dato, e quando poi metto la funzione "peppa XYZ" succede che se chiudo il file il modulo si "cancella". E debbo ogni volta riscriverlo.
Come posso fare per salvarlo in modo tale che questo file Excel mi diventi una "matrice" grazie alla quale posso variare il contenuto della colonna A facendo si che l'estrazione sia automatica? Grazie!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Estrarre frasi da una cella

Postdi Anthony47 » 11/11/16 14:57

Io ti ho proposto in prima battuta l'uso delle "Funzione peppa", che ti consente di estrarre una o piu' righe dal contenuto di una singola cella (max 9 righe); alla fine non ho capito se ti funziona o no.
Ti e' chiaro quale dovrebbe essere la sintassi?
Codice: Seleziona tutto
=peppa(Cella;RigaORighe)

dove il parametro RigaORighe e' un numero di tante cifre quante sono le righe che vuoi estrarre con la formula; esempio: 2=solo riga2; 25=riga2 e riga5; 135=riga1, riga3 e riga5. Se chiedi una riga che non esiste la formula ti restituira' #Valore
Visto che dici che hai sempre 5 righe allora non modifico il codice perche' restituisca solo le righe esistenti e non dia l'errore, in caso di parametri inconsistenti con la struttura delle celle.

A questo punto il file deve essere salvato nel formato .xlsm, Cartella con attivazione delle macro.

Ma se l'obiettivo e' invece estrarre tutte le righe da tutte le celle della colonna allora la soluzione del "Testo in colonna" e' piu' vantaggiosa.

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

Re: Estrarre frasi da una cella

Postdi AleRosa » 12/11/16 10:26

Ciao Anthony,
sì, la formula funziona alla grandissima!!! Grazie mille!
Ed ho anche capito il funzionamento della stringa peppa. Non ho ancora provato l'altra opzione ad essere sincera.
Ho fatto una cosa: considerando che le celle che contengono sempre 5 righe sono tante, se in B2 metto la formula peppa, ho poi copiato la formula nelle celle sottostanti (in modo tale che l'estrazione sia automatica). Ora, siccome è un po' fastidioso "trascinare" la formula di volta in volta, avevo provato a fare invece di =peppa(A2;2) >> =peppa(A2:A300;2) [perché sono 300 le righe che contengono le frasi da estrarre - praticamente ho aggiunto un intervallo] ma... non funziona. Forse non si fa così?
Grazie mille!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40

Re: Estrarre frasi da una cella

Postdi Anthony47 » 14/11/16 01:45

AleRosa ha scritto: sì, la formula funziona alla grandissima!!! Grazie mille!
Ed ho anche capito il funzionamento della stringa peppa. Non ho ancora provato l'altra opzione ad essere sincera.

Non mi hai detto nulla se l'obiettivo e' estrarre tutte le righe da ogni singola cella o solo delle righe specifiche; continuo quindi a ragionare su quella che e' la mia impressione, cioe' estrarre tutte le righe di tutte le celle, e ti confermo quanto ti dissi:
[..] se l'obiettivo e' invece estrarre tutte le righe da tutte le celle della colonna allora la soluzione del "Testo in colonna" e' piu' vantaggiosa

Quindi il suggerimento e' di procedere alla registrazione macro, come ti dissi il 10/11 pomeriggio.

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

Re: Estrarre frasi da una cella

Postdi AleRosa » 14/11/16 09:36

Grazie assai Anthony!
Funzionano entrambi e va benissimo così!
Non so davvero come ringraziarti!!!!
AleRosa
Utente Junior
 
Post: 46
Iscritto il: 09/11/16 09:40


Torna a Applicazioni Office Windows


Topic correlati a "Estrarre frasi da una cella":


Chi c’è in linea

Visitano il forum: Nessuno e 70 ospiti