Condividi:        

Sostituire valori in colonna con il nome del "gruppo" nel qu

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

Sostituire valori in colonna con il nome del "gruppo" nel qu

Postdi sufpolo » 05/03/12 13:32

Buongiorno, ho sfogliato vari thread nel forum ma non ho ancora trovato uan soluzione "adattabile" al mio caso, spero di non violare le regole del forum.
Premetto che non ho competenze professionali in termini di vba, tutto cio' che arrivo a fare é dato dall'utilizzo del registratore e dei thread.

Dunque, la situazione é questa:
Ho un file "Città", che riporta varie colonne, e supponiamo che "colonna A" sia la colonna su cui voglio lavorare; in questa colonna vengono riportate i nomi delle stazioni di partenza dei viaggiatori, dell'aeroporto etc (milano centrale, malpensa, roma termini, ciampino).
Quello che dovrei fare é sostituire stazioni, aeroporti etc della stessa città con il nome della città, ad esempio
Milano Malpensa = Milano
Milano Centrale = Milano
Non posso fare un cerca e sostituisci poiché si tratta di troppi casi differenti, quindi avevo pensato di creare un file "Codifica" a parte ove codificare tutte le varie origini possibili con la città di riferimento, dunque due colonne, la prima l'origine, la seconda colonna la città (dunque milano per esempio).
Fatto questo file pensavo di avviare una macro che, per ogni valore nel file "Città" nella colonna A, controlli nel file "Codifica" colonna A ove si posiziona e, trovata la riga, copi il valore della colonna B (dunque il nome della città ricodificato) nel file "Città", l'obiettivo é ovviamente quello di "pulire" i dati e renderli analizzabili.

Ho provato una macro, che vi copio di seguito, ove dovevo inserire manualmente i "casi", il problema é che non funzionava con il file in questione, mentre funzionava benissimo con un file da me creato a mano.

ecco la macro

Sub FindChange()

Dim cella As Range
For Each cella In Range("BP1:BP3000")
Dim strCella As String
strCella = cella.Text
Dim parole() As String
parole() = Split(strCella)
Dim nuovaStr As String
nuovaStr = ""
For I = 0 To UBound(parole)
Select Case parole(I)

Case "Tours"
parole(I) = "Tours"

Case "GARE DU NORD PARIS"
parole(I) = "PARIS"

Case "LILLE EUROPE"
parole(I) = "lille"


'Case ...

End Select
nuovaStr = nuovaStr & parole(I) & " "
Next
cella.FormulaR1C1 = nuovaStr
Next


End Sub
sufpolo
Newbie
 
Post: 7
Iscritto il: 18/12/05 11:04

Sponsor
 

Re: Sostituire valori in colonna con il nome del "gruppo" ne

Postdi Anthony47 » 05/03/12 15:18

Da quello che intuisco, i tuoi dati sono scaricati da internet e quello che sembra uno "spazio" non ha la codifica "32" (il codice ASCI dello spazio standard); se la tua macro gia' funziona con dati scritti a mano, allora la cosa piu' semplice e' che fai la sostituzione globale di quel finto spazio con lo spazio vero e poi esegi la macro.
Per fare la sostituzione globale userai il comando "Trova":
-copia da una stringa esistente il finto spazio (selezioni il carattere nella barra della formula, Contr-C)
-Contr-Maiusc-T per avviare il Trova
-tab Trova, ci incolli il finto spazio
-tab Sostituisci, ci metti uno spazio da tastiera
-Sostituisci tutto, Ok

Poi esegui la macro.

Fai sapere, ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Sostituire valori in colonna con il nome del "gruppo" ne

Postdi sufpolo » 05/03/12 17:58

Innanzitutto grazie mille per la risposta; ho tentato immediamente e in effetti, eseguendo i passaggi, mi trova e mi sostituisce 20140 caratteri; questa é la notizia buona,la notizia cattiva é che sfortunatamente la macro ancora non sostituisce i valori.
Il file viene generato da un programma di raccolta dati, se puo' essere utile protrei allegarlo.

Una piccola domanda, nel caso arrivi a farlo funzionare, é possibile sostuire i singoli casi con "controlli" di appartenenza a liste ? perché i casi che dovrei inserire a mano sarebbero circa 1000, mentre le liste che dovrei creare sarebbero circa 150.

Grazie ancora
sufpolo
Newbie
 
Post: 7
Iscritto il: 18/12/05 11:04

Re: Sostituire valori in colonna con il nome del "gruppo" ne

Postdi Flash30005 » 05/03/12 22:36

Se non ottieni le sostituzioni significa che ci sono altri caratteri differenti tra i dati origine con i dati della tua tabella sostituzioni.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Sostituire valori in colonna con il nome del "gruppo" ne

Postdi Anthony47 » 05/03/12 23:33

Che la macro funzionasse "benissimo" l' avevi detto tu nel rpimo messaggio, io ti ho creduto sulla parola :D

Ma tu sei in grado di preparare una tabella che contiene
-prima colonna, tutte le "frasi complete" che andrebbero sostituite (es Orio al Serio, ma anche Orio al Serio BG)
-seconda colonna, la frase che sostituisce (es Bergamo)
Se Si, allora allega un file dimostrativo con i dati di origine e questa tabella gia' preparata (bastano una decina di voci) e potremo cimentarci con una macro (ma potrebbe bastare anche una formula basata su Cerca.Vert, abbastanza semplice).

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

Re: Sostituire valori in colonna con il nome del "gruppo" ne

Postdi sufpolo » 06/03/12 11:38

:/ Ok ho dato troppo fiducia a me stesso, ad ogni modo procedo alla creazione del file con alcune delle voci da sostituire..

Grazie per il momento
sufpolo
Newbie
 
Post: 7
Iscritto il: 18/12/05 11:04

Re: Sostituire valori in colonna con il nome del "gruppo" ne

Postdi sufpolo » 08/03/12 07:24

Ecco finalmente il file di cui vi parlavo:

https://docs.google.com/open?id=0B4QGJ0 ... aUFZRlJmdw

spero riusciate a visualizzarlo!
sufpolo
Newbie
 
Post: 7
Iscritto il: 18/12/05 11:04

Re: Sostituire valori in colonna con il nome del "gruppo" ne

Postdi Anthony47 » 09/03/12 01:32

Non e' che ti sia sciupato troppo a descrivere i tuoi dati... Comunque se vuoi sostituire nel foglio LISTA DESTINAZIONI secondo la tabella presentata in Sheet2 allora potresti usare questa macro:
Codice: Seleziona tutto
Sub repldest()
Set mySorg = Sheets("Sheet2").Range("A1:A10000")
Set myRepl = Sheets("Sheet2").Range("B1:B10000")
'
'Crea copia di foglio LISTA DESTINAZIONI e lavora su quello
Sheets("lISTA DESTINAZIONI").Copy After:=Sheets(Sheets.Count)
'
For I = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    If Not IsError(Application.Match(Cells(I, 1).Value, mySorg, 0)) Then
        Cells(I, 1).Value = myRepl.Range("A1").Offset(Application.Match(Cells(I, 1).Value, mySorg, 0) - 1, 0)
    End If
Next I
End Sub
Essa duplica il foglio LISTA DESTINAZIONI prima di modificare (nella copia) il contenuto.

Se non e' questo che cercavi allora descrivi un po'.

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


Torna a Applicazioni Office Windows


Topic correlati a "Sostituire valori in colonna con il nome del "gruppo" nel qu":


Chi c’è in linea

Visitano il forum: Nessuno e 95 ospiti