Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Stringa Estrai

3 views
Skip to first unread message

John B

unread,
Jan 13, 2009, 12:52:56 PM1/13/09
to
Un Cordiale saluto a tutti.

Ho una serie di circa 10000 righe di stringe di testo di lunghezza variabile
in A1 che dovrei formattare come da esempio sottostante.
Ho provato con "Stringa.Estrai" e la funzione "Destra", ma riesco
correttamente a fare la prima colonna e l'ultima.
C'è un modo per poter risolvere il quesito.

Abruzzo (PE) MONTESILVANO V. ROMA 4.350 750 175
Abruzzo (PE) MOSCUFO P.ZZA PRINCIPE UMBERTO 325 100 50
Abruzzo (PE) NOCCIANO L.GO MADONNA DEL PIANO S.N. 225 50 50
Abruzzo (PE) PENNE P.ZZA LUCA DA PENNE 1.100 200 50
Abruzzo (PE) PESCARA P.ZZA ITALIA n. 1 12.000 3.250 1.200


Regione (Prov.) | Comune | Indirizzo |
Totale | Parte_1 | Parte_2

Abruzzo (PE) MONTESILVANO V. ROMA 4350 750 175
Abruzzo (PE) MOSCUFO P.ZZA PRINCIPE UMBERTO 325 100 50
Abruzzo (PE) NOCCIANO L.GO MADONNA DEL PIANO 225 50 50Abruzzo
(PE) PENNE P.ZZA LUCA DA PENNE 1100 200 50
Abruzzo (PE) PESCARA P.ZZA ITALIA n. 1 12000
3250 1200

Ringrazio della Vs disponibilità e saluto.
JohnB

eliano

unread,
Jan 13, 2009, 8:41:07 PM1/13/09
to

Ciao Jonny.
Con Stringa.Estrai, se i dati fossero omogenei, potresti tentare di
usare il Trova cercando il carattere "spazio" per ottenere la
divisione della stringa nei singoli componenti. Ad esempio:
B1:=STRINGA.ESTRAI(A1;TROVA(" ";A1;TROVA(" ";A1)+1)+1;255) ti trova la
posizione del secondo spazio, e così via.
Disgraziatamente le caratteristiche del tuo indirizzo (e la mia
ignoranza in merito) non si prestano allo scopo, per cui prova questa
macro artigianale che, almeno con i dati da te riportati sembra
funzionare.

Public Sub provanagrafico()
Dim CL As Object
Dim RNG As Range
Dim B() As String
Dim indir As String
Dim X As Long
Sheets("Foglio1").Select
Set RNG = Range("a2:a10") ' <----- da variare
For Each CL In RNG
If CL.Value = "" Then Exit Sub
indir = ""
B = Split(CL, " ")

CL.Offset(0, 1).Value = B(0) & " " & B(1)
CL.Offset(0, 2).Value = B(2)
CL.Offset(0, 4).Value = Replace(B(UBound(B) - 2), ".", ",")
CL.Offset(0, 5).Value = Replace(B(UBound(B) - 1), ".", ",")
CL.Offset(0, 6).Value = Replace(B(UBound(B)), ".", ",")

For X = 3 To UBound(B) - 3
indir = indir & B(X) & " "
Next
CL.Offset(0, 3).Value = indir

Next CL
End Sub

Saluti
Eliano

John B

unread,
Jan 14, 2009, 7:08:13 AM1/14/09
to
Eliano,
ti ringrazio infinitamente. La "macro artigianale" è perfetta. Fossi anch'io
in grado di scrivere qualche riga di codice ...

Grazie ancora e buona giornata
Ciao
JohnB

eliano

unread,
Jan 14, 2009, 5:12:09 PM1/14/09
to

Grazie del riscontro Jonny.
Un amico, tendenzialmente gay, soleva dire:"Nessuno nasce
imparato". :-))
Hai Excel con le sue guide in linea, hai a disposizione l'archivio di
questo NG e Google per cercare argomenti utili, quindi comincia a
farti una cultura ed a scrivere qualcosa.
Alla fine, per male che ti vada, scriverai delle routines simili a
quelle che scrivo io. :-))
Saluti
Eliano

0 new messages