Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

codice separa testo

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

codice separa testo

Postdi matzap » 14/03/16 12:01

Ciao a tutti,
in una cella ho un testo così composto:

Partenza
n° 21 blocchi 2050 x 1250 sp. 30
n° 7 blocchi 2050 x 1250 sp. 33

vorrei impostare delle variabili testo in modo da avere:
testo0=21
testo1=2050x1250
testo3=30
testo4=7
testo5=2050x1250
testo6=33

potete aiutarmi?
ciao
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Sponsor
 

Re: codice separa testo

Postdi alfrimpa » 14/03/16 14:14

Ciao Matzap

Sicuramente esisteranno soluzioni migliori ma, giusto come prima indicazione potresti , con Dati, Testo in colonne, suddividere la stringa in tante colonne (puoi escludere quelle che non ti interessano tipo "n°" e "sp." e poi con un copia e incolla speciale, trasponi riportarle come desideri.

N.B. nella stringa "2050 x 1250" non vi dovrebbero essere spazi e dovrebbe essere scritta così "2050x1250".

Se le righe del tuo file sono molte si potrebbe tentare di automatizzare il tutto con una macro.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 842
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: codice separa testo

Postdi matzap » 14/03/16 16:19

ciao,
infatti mi serve una macro. per questo ho chiesto un codice...
:-)
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: codice separa testo

Postdi alfrimpa » 14/03/16 16:44

Ok provo a farla.

ma i dati hanno sempre quella struttura ossia ogni parola è delimitata da spazi e i dati che non ti interessano sono sempre "n°" e "sp." o possono esserci altre varianti?
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 842
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: codice separa testo

Postdi alfrimpa » 15/03/16 15:39

Ciao Matzap

In assenza di tue indicazioni al riguardo ho provveduto, sulla base strettamente dell'esempio da te fornito a scrivere le macro che mi hai richiesto e che ho inserito nel file che vedi linkato

http://www.filedropper.com/matzap

Le macro sono queste:

Codice: Seleziona tutto
Sub DividiTesto()
Dim numrec As Long
numrec = Cells(Rows.Count, 1).End(xlUp).Row
Range("a1:a" & numrec).Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
        FieldInfo:=Array(Array(0, 9), Array(2, 1), Array(5, 1), Array(13, 1), Array(25, 9), _
        Array(29, 1)), TrailingMinusNumbers:=True
End Sub


Questa effettua la suddivisione del testo in colonna A in colonne escludendo le stringhe che non ti interessano.

Codice: Seleziona tutto
Sub TrasponiTesto()
Dim ur As Long
Dim lr As Long
Dim rng As Range
Dim cel As Range
lr = Cells(Rows.Count, 1).End(xlUp).Row
Set rng = Range("a1:a" & lr)
For Each cel In rng
    ur = Application.WorksheetFunction.CountA(Range("G:G"))
    If ur = 0 Then
        ur = 1
    End If
    Range("A" & cel.Row & ":" & "D" & cel.Row).Select
    Selection.Copy
    Range("G" & ur).Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
Next cel
Range("a1").CurrentRegion.ClearContents
End Sub


Questa effettua la "rotazione dei dati in colonna G

Quest'ultima esegue in sequenza le due macro

Codice: Seleziona tutto
Sub TrasponiDati()
Application.ScreenUpdating = False
Call DividiTesto
Call TrasponiTesto
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub


Prova un po' il file (sul foglio1 ho messo un pulsante per lanciare la macro) e fai sapere.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 842
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: codice separa testo

Postdi Anthony47 » 15/03/16 22:27

Vedi messaggio e file di Alfredo, sopra.

Questo codice potrebbe essere piu' diretto:
Codice: Seleziona tutto
Dim myStr As String, mySplit, myStr0
'
myStr0 = Cells(2, 1).Value         '<<< Qui varia Riga /Colonna per indirizzare altre celle
myStr = Replace(Replace(Replace(Replace(myStr0 & " ", "n°", "##"), "blocchi", "##"), "sp.", "##"), Chr(10), " ")
mySplit = Split(myStr, "##", , vbTextCompare)
If UBound(mySplit, 1) > 5 Then
    testo0 = Trim(mySplit(1))
    testo1 = Trim(mySplit(2))
'etc etc
End If

Cioe' da mySplit(1) fino a mySplit(6) dovrebbero esserci i contenuti che ti servono, che puoi posizionare nelle variabili che ti servono.
Modifica la riga marcata <<< per puntare a celle diverse da A2.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "codice separa testo":


Chi c’è in linea

Visitano il forum: fabrizio2001 e 10 ospiti