Condividi:        

Raggruppamento indirizzi tramite macro

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

Raggruppamento indirizzi tramite macro

Postdi thunder78 » 30/04/07 22:30

Innanzi tutto un saluto a tutti gli amici del forum. Sono nuovo e vorrei chiedervi un aiuto. Vorrei raggruppare una lista di indirizzi scritti tutti in modo diverso tramite una macro. Faccio un esempio, ho questa lista:

Viale Palmiro Togliatti
Palmiro Togliatti
Via Veneto
Via Vittorio veneto

Fino ad ora ho utilizzato la funzione filtro--> contiene, ho copiato i risultati su un altro foglio, modificato l'indirizzo con ad esempio "veneto", riempendo anche le celle vuote sottostanti (i dati vengono spesso aggiornati) per ogni riga corrispondente, creato una pivot per eliminare le celle vuote e riesploso i dati su un altro foglio. Lo stesso per ogni altro indirizzo :eeh:

Il procedimento mi sembra alquanto lungo, quindi mi chiedevo se c'era un modo più rapido, perchè poi bisogna raggruppare anche gli altri indirizzi; il risultato finale dovrebbe essere il seguente:


TECNICO SEDE
PINCO VENETO
PALLINO VENETO
PLUTO TOGLIATTI
PAPERINO TOGLIATTI

Esiste una maniera più rapida?
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Sponsor
 

Postdi Anthony47 » 01/05/07 23:32

Ciao thunder78, un saluto anche a te e benvenuto nel forum.

Non dici quale e’ il formato dei dati di origine, quindi ti passo un “esempio” di soluzione.
Supponiamo che l’ indirizzo sia in colonna B, e che le colonne D e successive siano libere.
Allora in D1 scrivi “togliatti”, in E1 “veneto” e cosi’ via sulle celle successive
In D2 scrivi la formula
Codice: Seleziona tutto
=SE(VAL.ERRORE(RICERCA(D$1;$B2));"";D$1)
Poi copi questa formula e la incolli sulle celle D2:XXXX2 (dove XXXX e’ l’ ultima colonna in cui hai inserito un dato).
Poi in colonna XXXX+1 inserisci la formula
Codice: Seleziona tutto
=CONCATENA(D2;E2;F2; etc etc)
, cioe’ fino alla cella “XXXX2”
Infine copi tutte le formule su riga 2 (da D2 fino alla CONCATENA) su D3 verso il basso per tutte le righe compilate con dei dati.

L’ ultima colonna dovrebbe contenere il dato che credo di aver capito tu cerchi.
Se non risolve, fatti sentire.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi thunder78 » 02/05/07 12:44

Grazie per la risposta. Ma nel caso in cui ho un elenco molto più lungo di indirizzo dovrei creare altrettante colonne? Gli indirizzi sono veramente tanti e vari.
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Postdi thunder78 » 02/05/07 12:48

Ti porto un esempio:

Per Prco dei Medici ho la necessità di riunire tutto sotto MEDICI, anche su una colonna in corrispondenza dell'indirizzo reale, creando così una colonna sede. La fonte dei dati è un origine dati esterni, quindi soggetta a cambiamenti.


PARCO DE' MEDICI 61
V.le europa 190
VIA PARCO DE MEDICI ED.C
Piazza Giovanni XXIII 09100 Cagli
Via Val Cannuta, 250
Via Dei Castelli Romani, 7
Via Valcannuta 182
Viale Oceano Pacifico 171
PARCO DE' MEDICI 61
Via Valcannuta 182
Viale Parco De' Medici 61 Ed. A
VIA DI TORRE ROSSA ,66
PARCO DE MEDICI
Via Valcannuta 250
VIA DEGLI AGROSTEMMI, 30
Via Oriolo Romano 265
VIA P. DE FRANCISCI 152
VIA PIETRO DI FRANCISCI 152
V.le OCEANO PACIFICO, 171
Via Valcannuta 250
VIA PARCO DE' MEDICI, 61 CORPO C
Via Valcannuta 250
VIA O ROMANO 240
VIA CRISTOFORO COLOMBO,142
Viale Parco Dei Medici 61
v agrostemmi 30
VIA TORREROSSA,66
Via Oriolo Romano 257
Via Boiardo ,12
VIA VALCANNUTA 182
S.S PONTINA KM 29.100
p.CO MEDICI, 61
VIA DEGLI ESTENSI,86-88
Via Di Val Cannuta 186
Via Valcannuta 250
V.le Parco De' Medici,61 Ed. A
VIA TORREROSSA 66
VIA DEGLI AGROSTEMMI 30
VIA FAUSTINIANA 28
via lamaro 79
Viale Parco De Medici, 61
VIA DELLA VIGNACCIA 45
VIA ORIOLO ROMANO 257
VIA PARCO DE MEDICI
V.le Parco De' Medici,61
VIA DELLA VIGNACCIA 167
Via Degli Estensi
VIA DI TORRE ROSSA,66
VIA FAUSTINIANA 28
via valcannuta, 186
VIA BORGOVICO 167
VIA di Valleranello 9
Viale Oceano Pacifico 171
Viale Oceano Pacifico 171
Via Valcannuta 186
VIA PARCO DEI MEDICI,SNC CORPO C
Via Valcannuta, 250
Via Vignaccia, 45
VIA DELLA VIGNACCIA, 45
Via Oriolo Romano 257
VIA MOSCA 8
VIA VALLE FIORETTA 205
Largo Valerio Bacigalupo 9
Via Igino Garbini Snc
Via oceano pacifico, 171
Via Duca Del Mare 33
VIALE PARCO DEI MEDICI 61
Via Manca Lupati, 14
Via Oriolo Romano 257
VIA FAUSTINIANA 28
p.co dei medici
VIA DELLA BOSCAIOLA 26
Viale Parco De Medici, 37
Viale Parco De Medici, 37
Viale Parco De Medici, 37
VIA DI VALCANNUTA 186
Via Faustiniana, 28
VIA FAUSTINIANA 28
VIA TIBURTINA 1224
Via Della Vignaccia 45
VIA VIGNACCIA, 167
VIA DELLA VIGNACCIA 45
ORIOLO ROMANO, 240
Pontina Km 29,100
Via Aurelio Saliceti 2
VIA VAL CANNUTA 182
Via della Vignaccia 167
VIA DE FRANCISCI
VIA DELLA VIGNACCIA 45
Via Valcannuta 250
Viale Europa 190
Via Valcannuta 250
Parco dei Medici,61
VIA VALCANNUTA,186
VIA VALCANNUTA 182
Via Monti Lepini 29
Via Matteo Maria Boiardo 12
VIA PIETRO DE FRANCISCI 152
Via Di Val Cannuta 186
Rm V.le Parco De' Medici,61 Ed. C 00148 Roma
Parco de Medici snc
VIA FAUSTINIANA 28
VIA PARCO DEI MEDICI,SNC CORPO A
VIA DE FRANCISCI 152
SS Pontina Km 29,100
Via Budapest, 34
Via Oriolo Romano, 240
VIA DE FRANCISCI 152
VIA DEGLI AGROSTEMMI
V.le Parco De' Medici,61 Ed. A
VIA ESTENSI,88
Via torre rossa 66
Via Oriolo Romano 240
Viale Parco Dei Medici Snc
VIA DI TORREROSSA
VIA DI TORRE ROSSA,66
via della vignaccia 167
Via di torre rossa 66
parco dei medici 61
VIA VALCANNUTA 182
PARCO MEDICI,61
Via Palladio 1
P.ZZA DEL VIMINALE 7
Via Luigi Rizzo, 20 - 00136
Viale parco de medici 61
Via Arnaldo Da Brescia 4
V.LE EUROPA 190
parco de medici 61
Via Valcannuta 250
pontina, km 29,100
Via Oriolo Romano 257
valcannuta 182
Via Valcannuta 250
Via Garbini Snc
Viale Parco de' Medici 61
VIA DI VAL CANNUTA,186
Via Valcannuta 250
VIA TIBURTINA KM 13.700
PARCO DEI MEDICI 61
VIA FAUSTINIANA, 28
TORRE ROSSA 66
via parco de medici, 61
Via Di Macchia Palocco 243
Via Valcannuta 250
via torrerossa,66
VIA MACCHIA PALOCCO,233
Via Valcannuta 182
Via Valcannuta 182
VIA SALICETI
Via Valcannuta 250
VIA PARCO DEI MEDICI 61
Via Delle Susine 81
Viale Parco Dei Medici 61
V.le Parco De' Medici,61 Ed. C
Via Valcannuta 182
VIA DI TORRE SPACCATA, 175
viale Europa,190
VIA AURELIO SALICETI 2
VIA PARCO DEI MEDICI,SNC
VIA MACCHIA PALOCCO,233
S.S. Pontina km 29.100
Via Tor Pagnotta, 68
VIA P. DE FRANCISCI 152
VIA BOIARDO 12
PARCO DE MEDICI,61
Via Calamattia, 17
VIA DELLE CONCE snc
V.le Parco De' Medici,61 Ed. A
VIA DI VAL CANNUTA 186
VIA TORRE ROSSA 66
VIA DEGLI ESTENSI 88
Viale Parco De Medici, 61
VIA PARCO DEI MEDICI 61
Via fratelli bettinelli, 3
Via Valcannuta 182
VIALE OCEANO PACIFICO
Viale Parco De' Medici 61 Ed. A
VIA AURELIO SALICETI 2
Santa Palomba
PARCO DEI MEDICI
VIA DI VAL CANNUTA,186
VIA DE FRANCISCI 152
Viale Oceano Pacifico 171
Via Pietro De Francisci 152
VIA FAUSTINIANA 28
Via Valcannuta 250
VIA DI VAL CANNUTA 186
Via Tor Pagnotta 74
Via Valcannuta 182
Via Matteo Maria Boiardo 12
via agrostemmi 30
PARCO MEDICI 61
Piazza Einaudi 8
VIA ALDO MORO - ANG. VIA TIBERIO
via agrostemmi 30
VIA FARENSE KM. 5,300 - LOCALITA' TAROCCI
VIA DE FRANCISCI
Via Valcannuta 182
Via Oriolo Romano 240
VIA PARCO DEI MEDICI,SNC CORPO C
Viale Parco De' Medici 61 Ed. A
Viale Parco Dei Medici 61
Via Valcannuta 182
Via Sabatino Gianni, 121
via torre rossa 66
VIA VALCANNUTA 186
Viale Parco De' Medici 61 Ed. C
Via Valcannuta 250
PCO MEDICI 61
Via Oriolo Romano 240
Via Val Cannuta 250
VIALE PARCO DEI MEDICI
LARGO GUIDO CARLI 1
Via Oriolo Romano 265
via degli agrostemmi s.palomba
Via Oriolo Romano, 257
Via Valcannuta 182
VIALE OCEANO PACIFICO,171
VIA DEL MANDROLESAI, 22
Via Delle Concie
Via Tiburtina Valeria, Km. 13,700
Viale europa 190
Viale Oceano Pacifico 171
Via Oriolo Romano 257
Via Maso Finiguerra 29
VIA LAMARO 79
Via Valcannuta 182
VIA DELLa VIGNACCIa 167
via degli agrostemmi 30
VIALE EUROPA 190
Viale Parco de MEDICI 61
Via Faustiniana, 28
Via Pietro De Francisci, 152
Via Valcannuta 250
Via Luigi Rizzo, 20
Viale Parco Dei Medici 61
Via Tiburtina Valeria, Km. 13,700
Via Tiburtina Valeria, Km. 13,700
Viale Oceano Pacifico 171
VIA PONTINA,KM 29,100
VIA CERRO
Parco dei Medici 90
Via Valcannuta 182
V.le Parco De' Medici, 61
Via Luigi Rizzo, 22 - 00136
VIA TORREROSSA 66
VIA S.S. 81 KM.171+120
VIA DELLA VIGNACCIA 45
Via S. Gianni, 121 - 00156 Roma
Via degli estensi 88
via pontina km 29.100
Via degli agrostemmi,30
VIA DELLA VIGNACCIA, 45
VIA DEGLI AGROSTEMMI 30
VIA VIGNACCIA 45
PARCO DEI MEDICI
Via Oriolo Romano 240
VIA AGROSTEMMI, 30
via della vignaccia 167
VIA PARCO DEI MEDICI,SNC CORPO C
Via Valcannuta 250
VIA AURELIO SALICETI 2
Via di Val Cannuta, 182
Via Della Bufalotta 241, Pal 3
P.Medici, 61
Via Luigi Rizzo, 28 - 00136
VIA TORREROSSA 66
VIA DI VALCANNUTA 186
Via Valcannuta 182
VIA PIETRO DE FRANCISCI 152
VIA luigi rizzo,22
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Postdi Anthony47 » 02/05/07 14:52

Questo e' uno dei casi in cui si deve mettere ordine in un elenco nato in disordine: missione quasi impossibile.
Farsi un "dizionario" delle equivalenze e' indispensabile, mentre possono cambiare le tecniche di applicazione delle equivalenze.

Nell' ipotesi che ti ho prospettato ieri sera, dovrai inserire una colonna per ogni equivalenza che vuoi definire; vedo che alcune equivalenze sono anche piu' incasinate di come si pensava: es val cannuta e valcannuta richiederanno 2 colonne per essere identificate, e sara' necessario inserire su una seconda cella il nome in cui quella definizione va tradotta.
Quindi potrai mettere in riga 1 il nome da cercare (es val cannuta in unca colonna e valcannuta in altra colonna) e in riga 2 il nome in cui va tradotto (es valcannuta in ambedue le colonne) e la formula di D3 diventa
Codice: Seleziona tutto
=SE(VAL.ERRORE(RICERCA(D$1;$B3));"";D$2)

che poi sara' utilizzata come detto ieri a proposito di D2.

Tenendo presente che in un foglio ci sono max 256 colonne, e che la formula CONCATENA deve essere compilata con ogni colonna utilizzata, potrebbe essere conveniente utilizzare il seguente approccio:
-in col A di foglio2 elenchi tutti gli indirizzi che conosci
-in col B scrivi il nome equivalente in cui vuoi tradurre quell' indirizzo
-sul foglio dei dati, in una colonna libera usi la formula
Codice: Seleziona tutto
=CERCA.VERT(A2;Foglio2!A:B;2;0)
poi copi questa formula nelle celle sottostanti.
Questa formula presuppone che A2 contenga l' indirizzo (disordinato) della sede, e ti restituisce quanto scritto in col B di foglio2 accanto all' esatta occorrenza di col A; i dati non presenti nel "dizionario" di foglio2 vengono identificati da #N/D; man mano che hai quindi nuovi indirizzi (o altre deformazioni di indirizzi esistenti) questi vanno accodati su foglio2 sotto l' elenco esistente e ne va definito il nome equivalente.

Ciao, fatti sentire.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi gik » 03/05/07 11:09

Ciao a tutti, una curiosità:
C'è un comando in VBA che faccia la stessa operazione di CONCATENA?
Grazie
" ... e come il sol che fulvo scema attergo il cupo mare, negli occhi miei, tu, riverberi radiosa"
GIK
gik
Utente Junior
 
Post: 86
Iscritto il: 18/07/06 16:41
Località: Gaeta

Postdi gik » 03/05/07 11:34

Scusate lo Spam, ma ho risolto:

Codice: Seleziona tutto
Set c1 = Range("L16")
        Set c2 = Range("L17")
        Set c3 = Range("L18")
       
        codice = c1 & "-" & c2 & "-" & c3


grazie lo stesso.
" ... e come il sol che fulvo scema attergo il cupo mare, negli occhi miei, tu, riverberi radiosa"
GIK
gik
Utente Junior
 
Post: 86
Iscritto il: 18/07/06 16:41
Località: Gaeta

Postdi thunder78 » 07/05/07 22:22

Anthony, grazie per le risposte fornite. Purtroppo non è possibile stabilire quante possibili combinazioni di indirizzi posso ritrovare, quindi compilare un elenco richiederebbe tempo.

Creo una lista con il nome delle sedi in ordine alfabetico; nel foglio orginale uso una formula del tipo.

=SE(F2=Foglio38!A15;"VAL CANNUTA")

Tradotto: se la cella f2 CONTIENE il valore univoco del foglio 38 (dove c'è la lista delle sedi sistemate alfabeticamente con valori univoci - in questo caso VAL CANNUTA), se vero "VAL CANNUTA", se falso 0.

Io ci ho provato ma non ci riesco.
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Postdi Anthony47 » 07/05/07 23:07

thunder78 ha scritto:Purtroppo non è possibile stabilire quante possibili combinazioni di indirizzi posso ritrovare, quindi compilare un elenco richiederebbe tempo.

Permetti: se compilare il dizionario richiede tempo, figurati quanto tempo e' richiesto dal cercare le sedi una per una ...
La proposta del CERCA.VERT ti da' l' evidenza di quali sedi mancano nel dizionario, quindi capisco la difficolta' ma continuo a ritenere che quella sia la strada da percorrere, soprattutto se sto' lavoro ti tocca farlo di tanto in tanto.

Vedi anche come fare a controllare all' origine l' introduzione dei dati, limitandola a un elenco predefinito di indirizzi.


La sintassi giusta della formula che vuoi usare e':
Codice: Seleziona tutto
=SE(F2=Foglio38!A15;"Val Cannuta";0)


Ma ricorda che nel tuo elenco Val cannuta compare come Val Cannuta e Valcannuta, con la formula non troverai ambedue le dizioni.

Ciao, fatti sentire.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi masimetto » 23/05/07 10:39

Ciao thunder78,
per fare quello che chiedi, hai bisogno di una macro in Excel, facile facile.
Quando dovrai aggiornare le righe, ti basterà cliccare su un pulsante che risolverà tutti i tuoi problemi...

Un collega
masimetto
Newbie
 
Post: 1
Iscritto il: 23/05/07 10:35

Postdi Anthony47 » 23/05/07 14:24

Non si finisce mai di imparare...

Ciao a tutti.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi thunder78 » 23/05/07 18:00

A proposito di indirizzi... su un altro foglio vorrei utilizzare una cella per inserire una parte dell'indirizzo, allo scopo di fare un filtro "contiene" in modo da filtrare le parole (quindi gli indirizzi) che contengono quell'inserimento.

Ora, ho provato con il filtro avanzato e ci sono riuscito, il problema è che devo inserire un asterisco all'inizio della parola e uno alla fine per filtrare le celle che contengono quelle 3-4 lettere (es. *lupo* mi trova largo bacigalupo). C'è un modo per scrivere nella cella e filtrare senza inserire gli asterischi?

Grazie.
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Postdi thunder78 » 23/05/07 18:08

Inoltre, sempre se fattibile, la macro andrebbe eseguita dando invio. Quindi forse in questo caso la macro andrebbe associata alla cella?
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Postdi Anthony47 » 23/05/07 23:27

A proposito di indirizzi... su un altro foglio vorrei utilizzare una cella per inserire una parte dell'indirizzo, allo scopo di fare un filtro "contiene" in modo da filtrare le parole (quindi gli indirizzi) che contengono quell'inserimento.

Ora, ho provato con il filtro avanzato e ci sono riuscito [... etc etc ...]

La clausola "contiene" e' gia' presente nel FILTRO AUTOMATICO; non hai bisogno del filtro avanzato.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Indirizzi

Postdi By Sal » 24/05/07 08:45

Ciao Anthony, e thunder, da quello che ho letto, e da tempo che manco dal forum, il fatto di "Val Cannutta", "valcannutta", "val Cannutta", secondo me è un errore di fondo, perchè indicheranno lo stesso indirizzo e non tre indirizzi diversi.
Per cui vanno corretti alla base con una cella Dati convalida da elenco dinamica, cioè aggiornabile per ogni nuovo indirizzo, in modo da non creare doppioni che poi doppioni non sono.
e per prima cosa va epurato l'elenco in oggetto di tutte queste anomalie, e poi si crea l'elenco definitivo con le corrispondenze.
Che ne dite? Ciao :)

P.S. per Anthony, aprirò un post per un problema che ho, sperando che possiamo risolverlo Ciao
A rileggerci By Sal
Avatar utente
By Sal
Utente Junior
 
Post: 83
Iscritto il: 27/08/06 14:40

Postdi thunder78 » 24/05/07 09:23

Rispondo a Anthony: so che il filtro contiene lo trovo come filtro automatico, ma non so come associarlo a una qualsiasi cella di excel in modo da digitare 3-4 caratteri e ottenere un filtro automatico.

E' fattibile?
thunder78
Utente Junior
 
Post: 45
Iscritto il: 30/04/07 22:17

Postdi Anthony47 » 24/05/07 14:10

Ci sono stati vari topic riguardo l’ uso di autofilter all’ interno di macro; ad esempio guarda questi:
http://www.pc-facile.com/forum/viewtopic.php?t=50616
http://www.pc-facile.com/forum/viewtopic.php?t=50848
http://www.pc-facile.com/forum/viewtopic.php?t=54279
Tieni presente che il filtro e’ anche un metodo che potresti usare per l’ altro problema che hai pending, il DOPPIO.

Per Sal, concordo che il problema e’ il disordine con cui i dati arrivano nel foglio excel; credo che siano importati da altri programmi, quindi non e’ risolvibile con un Convalida da elenco; certamente chi amministra l’ altro programma puo’ imporre dei vincoli sui dati digitati, almeno per evitare che l’ anarchia continui.
E continuo a credere che la soluzione proposta (post del 2 maggio: tabella che traduce gli indirizzi attuali in indirizzi convenzionali) sia la piu’ pratica, la piu’ gestibile e abbastanza a pprova di errore.


Ciao.
[/url]
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Raggruppamento indirizzi tramite macro":


Chi c’è in linea

Visitano il forum: Nessuno e 43 ospiti