| | Post: 151 | Registrato il: 02/04/2018
| Città: PESCARA | Età: 75 | Utente Junior | EXCEL 2016 - SPREAD32 | | OFFLINE |
|
19/01/2022 18:48 | |
Buonasera,
ho un file di testo (concepito da capre), di circa 12000 bytes scritto su una sola riga:
paola 2 gianna 5 carla 4, eccetera
cioè nome, spazio, numero, spazio, altro nome, spazio, altro numero, spazio, ecc.
tutti gli spazi li ho trasformati in separatore ";", ad uso CSV, ma in queso modo ho migliaia di campi-colonna su una sola riga.
Se invece ad ogni spazio sostituisco un carattere "a-capo" mi ritrovo migliaia di righe in una sola colonna
Ora, senza scomodare il VBA, perchè del file non mi importa niente, esisterebbe una FORMULA che trasformi il tutto in
campo nome, campo numero
campo nome, campo numero
cioè crei la colonna A con i nomi, la colonna B con i numeri cancellando quindi le righe dove sono solo i numeri ?
Cioè da così
paola 2 gianna 5 carla 4
o da così
paola
2
gianna
5
carla
4
a così
paola 2
gianna 5
carla 2
E' solo una curiosità, intanto sperimento da solo, ma forse senza speranza
Grazie
LEO
https://t.me/LordBrum |
|
| | Post: 6.672 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
19/01/2022 19:31 | |
Ciao Leo, quando ti trovi migliaia di righe devi usare una formula che compili il nome in una colonna ed il numero in un altra colonna, saltando una riga si ed un altra no, dopo fai l'ordinamento eliminando le righe vuote.
so che con le formule si può fare, ma non saprei quali formule usare.
con il VBA basta un ciclo per avere il risultato, ma tu vuoi le formule.
Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 151 | Registrato il: 02/04/2018
| Città: PESCARA | Età: 75 | Utente Junior | EXCEL 2016 - SPREAD32 | | OFFLINE |
|
19/01/2022 19:57 | |
Ciao Salvatore, intanto grazie per la risposta
la prima soluzione già provata a mano e non funziona perchè nell'ordinamento succede qualcosa che non quadra, cmq ci proverò ancora.
Intanto come detto, di questo file non mi importa niente, tuttavia se ti scappa una UDF o macro semplicissima, ti ringrazio, lo avevo intuito che ci voleva il VBA.
Ma non sono questi i problemini di mio interesse, mi piace l'ordinamento, la matematica cosiddetta "discreta", e poche altre cose.
invece a te avrei voluto chiedere da tempo un possibile aggiornamento ad una macro che tu mi preparasti mesi fa, perchè avevo trovato una cosa da suggerirti o chiederti, ma ho trovato difficile scriverlo qui.
Grazie
LEO
https://t.me/LordBrum |
| | Post: 2.546 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
19/01/2022 20:06 | |
ciao
sicuramente si può trovare un metodo
meno caotico ma per ora
In A2
paola 2 gianna 5 carla 4 paola 2 gianna 5 carla 4 paola 2 gianna 5 carla 4 paola 2 gianna 5 carla 4
In H1
=ANNULLA.SPAZI(SINISTRA($A$2; TROVA("^";SOSTITUISCI($A$2; " "; "^";RIF.RIGA($A2)*2-2)&"^")))
in H2 da tirare in giù
=ANNULLA.SPAZI(STRINGA.ESTRAI(ANNULLA.SPAZI(SINISTRA($A$2; TROVA("^";SOSTITUISCI($A$2; " "; "^";RIF.RIGA($A3)*2-2)&"^")));SOMMA(LUNGHEZZA($H$1:H1))+RIF.RIGA(A1);20))
CTRL MAIUSCOLO INVIO
se non funzionano [Modificato da federico460 19/01/2022 20:07] |
| | Post: 152 | Registrato il: 02/04/2018
| Città: PESCARA | Età: 75 | Utente Junior | EXCEL 2016 - SPREAD32 | | OFFLINE |
|
19/01/2022 20:27 | |
grazie Federico
ho provato e pare funzionare
ma forse non ho detto bene che trattandosi di nomi o cognomi e relative frequenze vorrei che i nomi e le loro frequenze venissero in 2 colonne distinte in modo da poterli ordinare.
intanto cerco di riprendere l'originale dal web, magari te/ve lo sottopongo, ma ripeto, solo per curiosità
ah, eccolo, lo allego dopo averlo reso CSV
Leo
LEO
https://t.me/LordBrum |
| | Post: 153 | Registrato il: 02/04/2018
| Città: PESCARA | Età: 75 | Utente Junior | EXCEL 2016 - SPREAD32 | | OFFLINE |
|
19/01/2022 23:02 | |
ciao, lasciate perdere questo problema, il file di testo è un caos
Leo
LEO
https://t.me/LordBrum |
| | Post: 154 | Registrato il: 02/04/2018
| Città: PESCARA | Età: 75 | Utente Junior | EXCEL 2016 - SPREAD32 | | OFFLINE |
|
20/01/2022 08:46 | |
buongiorno
mi sono accorto che nel file di cognomi ci sono cognomi anche di 2 o 3 parole, oltre a qualche errore
allora ho dovuto usare un linguaggio di programmazione e gli ho detto che quando si incontra un numero il solo carattere precedente deve diventare separatore punto e virgola, mentre il caratere immediatamente successivo deve diventare un ritorno a capo
così ho creato un database verticale con 2 campi Cognome e Frequenza che poi ho ordinato.
Ve lo mostro per pura curiosità , e scusate per il quesito inutile
Leo
LEO
https://t.me/LordBrum |
| | Post: 6.673 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | OFFLINE |
|
20/01/2022 08:58 | |
Ciao Leo nel tuo file CSV sostituendo gli spazi con il punto e virgola, hai combinato un piccolo problema che poi scombina il resto
questa la macro che svolge il compito
Sub dividi()
Dim r, c, d, x, rng
Range("A5:B10000").ClearContents
d = Cells(1, 1)
rng = Split(d, ";")
r = 5: c = 1
For x = 0 To UBound(rng) - 1 Step 2
Cells(r, 1) = rng(x)
If Not IsNumeric(rng(x + 1)) Then x = x - 1: GoTo 1
Cells(r, 2) = Val(rng(x + 1))
1 r = r + 1
Next x
End Sub
il problema che hai combinato sono i cognomi composti del dipo "DI CAMILLO" oppure "DEL GIUDICE"
che causano questo problema
come vedi torna daccapo
per vedere carica la macro in un modulo
poi fai copia/incolla del csv nella cella "A1" me lancia la macro, ed avrai il risultato
potrei anche eliminare il DE o DEL ma perderesti il Cognome
Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
| | Post: 155 | Registrato il: 02/04/2018
| Città: PESCARA | Età: 75 | Utente Junior | EXCEL 2016 - SPREAD32 | | OFFLINE |
|
20/01/2022 09:02 | |
ahah Salvatore, non ho combinato un piccolo problema, ho combinato un casino, non avevo pensato ai cognomi doppi ecc, ma ora se hai letto il mio ultimo messaggio avrai notato che ho risolto col PowerBasic
Ti ringrazio moltissimo, ma lascia perdere, intanto vado a vedere cosa fa la tua macro
Ti scoccerò per cose ben più serie
Leo
LEO
https://t.me/LordBrum |
| | Post: 2.548 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
20/01/2022 11:46 | |
ciao
solo per curiosità
nel file che hai allegato con i dati nelle colonne
basterebbe
in colonna A
=INDIRETTO(INDIRIZZO(1;RIF.RIGA(A1)+RIF.RIGA(A1)-1))
in colonna B
=INDIRETTO(INDIRIZZO(1;RIF.RIGA(A1)+RIF.RIGA(A2)-1))
e tirare in giù
se le vuoi una sotto l'altra
=INDIRETTO(INDIRIZZO(1;RIF.RIGA(A1))) |
| | Post: 156 | Registrato il: 02/04/2018
| Città: PESCARA | Età: 75 | Utente Junior | EXCEL 2016 - SPREAD32 | | OFFLINE |
|
20/01/2022 12:02 | |
ciao Fede
forse non ho capito bene
l'ultimo file che ho allegato XLSX è la soluzione finale fatta come ho spiegato
Se invece ti riferisci al CSV, mi sono accorto tardi del disordine dovuto ai cognomi con più di una parola e non solo, e quindi non crederei che le tue formule possano funzionare, ma non trascuro niente e provo lo stesso
Tutte le formule servono sempre a qualcosa
Grazie
Leo
LEO
https://t.me/LordBrum |
| | Post: 2.549 | Registrato il: 10/10/2013
| Città: VICENZA | Età: 69 | Utente Veteran | 365 | | OFFLINE |
|
20/01/2022 12:08 | |
ho usato il file del post 5
ma se ci sono nomi e cognomi sfalsa
|
| | Post: 157 | Registrato il: 02/04/2018
| Città: PESCARA | Età: 75 | Utente Junior | EXCEL 2016 - SPREAD32 | | OFFLINE |
|
20/01/2022 12:40 | |
infatti doveva essere quello, e come ho già detto dopo aver messo nel testo i separatori mi sono accorto che oltre a certi errori i cognomi erano fatti anche di 2 o 3 parole, e quindi tutto a ramengo
ora per provare le tue formule devo riprndere il testo puro, mettere il separatore solo appena prima di un numero, e l'acapo appena dopo il solo numero, a quest'ora non è cosa da poco, vedrò nel pomeriggio
Grazie
LEO
https://t.me/LordBrum |
|
|