La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Un saluto a tutti,
vi scrivo perchè avrei esigenza di dover suddividere in più colonne numerosi dati contenuti in una stessa riga di un database. In particolare dalla colonna C del file in allegato vorrei parcellizzare in singole colonne le diverse informazioni ( ragione sociale, indirizzo, n civico, cap, città, km)
Sono a conoscenza delle varie funzioni trova, destra, sinistra, stringa estrai... ma mi sto trovando in difficoltà su quali funzioni esattamente scegliere e come nidificarle dal momento che le informazioni che vorrei estrarre sono diverse e non omogenee tra le diverse righe.
Grazie in anticipo in caso qualcuno possa aiutarmi
Un saluto
ciao
prima parte
mettila in D2 da tirare a destra e in basso
=ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(ANNULLA.SPAZI(CODICE.CARATT(10)&$C2);CODICE.CARATT(10);RIPETI(" ";100));100*COLONNE($A$1:A$1);100))
ma dividere ancora è un affare
Ciao
Prova con la macro seguente (da associare ad un pulsante Modulo, non ActiveX)
Sub dividi() Dim ur As Long, i As Long, testo ur = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To ur testo = Split(Trim(Range("C" & i)), Chr(10)) For j = 0 To UBound(testo) Cells(i, j + 4) = testo(j) Next j Erase testo Next i End Sub
Fai sapere. Ciao,
Mario
Ciao
fatta in fretta se poi riesco vedo se si può accorciare
e ancora non ci siamo
hai una miriade di variabili
D2
=ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(ANNULLA.SPAZI(CODICE.CARATT(10)&$C2);CODICE.CARATT(10);RIPETI(" ";100));100*COLONNE($A$1:A$1);100))
E2
=SINISTRA(ANNULLA.SPAZI(ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(ANNULLA.SPAZI(CODICE.CARATT(10)&$C2);CODICE.CARATT(10);RIPETI(" ";100));100*COLONNE($A$1:B$1);100)));TROVA("~";SOSTITUISCI(ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(ANNULLA.SPAZI(CODICE.CARATT(10)&$C2);CODICE.CARATT(10);RIPETI(" ";100));100*COLONNE($A$1:B$1);100));" ";"~";LUNGHEZZA(ANNULLA.SPAZI(ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(ANNULLA.SPAZI(CODICE.CARATT(10)&$C2);CODICE.CARATT(10);RIPETI(" ";100));100*COLONNE($A$1:B$1);100))))-LUNGHEZZA(SOSTITUISCI(ANNULLA.SPAZI(ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(ANNULLA.SPAZI(CODICE.CARATT(10)&$C2);CODICE.CARATT(10);RIPETI(" ";100));100*COLONNE($A$1:B$1);100)));" ";""))))-1)
F2
=ANNULLA.SPAZI(DESTRA(SOSTITUISCI(ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(ANNULLA.SPAZI(CODICE.CARATT(10)&$C2);CODICE.CARATT(10);RIPETI(" ";100));100*COLONNE($A$1:B$1);100));" ";RIPETI(" ";100));100))
G2
=ANNULLA.SPAZI(SINISTRA(SOSTITUISCI(ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(ANNULLA.SPAZI(CODICE.CARATT(10)&$C2);CODICE.CARATT(10);RIPETI(" ";100));100*COLONNE($A$1:C$1);100));" ";RIPETI(" ";100));100))
H2
=ANNULLA.SPAZI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(ANNULLA.SPAZI(CODICE.CARATT(10)&$C2);CODICE.CARATT(10);RIPETI(" ";100));100*COLONNE($A$1:C$1);100));1;"");2;"");3;"");4;"");5;"");6;"");7;"");8;"");9;"");0;"");"-";""))
I2
=ANNULLA.SPAZI(SINISTRA(SOSTITUISCI(ANNULLA.SPAZI(STRINGA.ESTRAI(SOSTITUISCI(ANNULLA.SPAZI(CODICE.CARATT(10)&$C2);CODICE.CARATT(10);RIPETI(" ";100));100*COLONNE($A$1:D$1);100));" ";RIPETI(" ";100));100))
ciao
marius
prima formula e macro fanno la stessa cosa
è un lavoraccio dividere come vuole Nikle
perchè le stringhe non sono uguali
qualcuna ha il numero civico
altre no
gli spazi sono messi alla carlona ecc...
comunque se alla tua macro aggiungi un annulla spazi
me la copio?
Ciao
Gli "annulla spazi" non l'ho messo volutamente perchè la macro esegue lo split in base al carattere "a capo" che c'è in tutte le righe.
Ciao,
Mario
Buongiorno a tutti
La macro "completa" è questa
Sub dividi() Dim ur As Long, i As Long, testo ur = Cells(Rows.Count, 1).End(xlUp).Row Range("D2:I" & ur).ClearContents For i = 2 To ur testo = Split(Trim(Range("C" & i)), Chr(10)) For j = 0 To UBound(testo) Cells(i, j + 4) = Trim(testo(j)) Next j Erase testo Next i 'per km Range("G2:G" & ur).Copy Range("I2").PasteSpecial Range("G2:G" & ur).ClearContents 'per città e cap For i = 2 To ur num = Split(Cells(i, 6), " ") On Error Resume Next Range("H" & i) = num(1) Range("G" & i) = num(0) On Error GoTo 0 Next i Range("F2:F" & ur).ClearContents 'indirizzo e n.civico For i = 2 To ur adr = Split(Cells(i, 5), " ") On Error Resume Next Range("F" & i) = adr(UBound(adr)) For k = 0 To UBound(adr) - 1 ind = ind & " " & adr(k) Next k Range("E" & i) = ind ind = "" On Error GoTo 0 Next i Cells(1, 4).Select End Sub
Fai sapere. Ciao,
Mario