Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

File di testo monoriga

Ultimo Aggiornamento: 20/01/2022 12:40
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
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
creazione file quiz random (11 messaggi, agg.: 26/09/2017 21:39)
Creazione file xml (5 messaggi, agg.: 13/03/2023 11:02)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 04:16. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com