|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Oct 2005
Città: Meleé Island
Messaggi: 275
|
Excel 2007 - Macro sostituzione valore
DI nuovo ciao a tutti!
![]() Volevo scrivere una macro per sostituire il valore /0Q/ all'interno di una cella con il valore /0M/. Ho provato così: Columns("B").Replace What:="/0Q/", Replacement:="/0M/", LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False ma eseguendola non succede nulla. Funziona invece con i numeri per esempio Columns("B").Replace What:="1", Replacement:="7", LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False ma la cosa strana è che se invece scrivo Columns("B").Replace What:="01", Replacement:="07", LookAt:=xlWhole, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False di nuovo non funziona. Mi sapete aiutare? |
![]() |
![]() |
![]() |
#2 | |
Member
Iscritto dal: Aug 2008
Messaggi: 178
|
Quote:
Ciao |
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Oct 2005
Città: Meleé Island
Messaggi: 275
|
Ciao,
già fatto ma non va |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Aug 2008
Messaggi: 178
|
Mi dispiace, non so che altro consigliarti.
Ho provato sul mio pc e da me funziona perfettamente. Ciao |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Oct 2005
Città: Meleé Island
Messaggi: 275
|
Ho provato a registrare una macro mentre sostituivo a mano il contenuto ed in effetti mi restituisce xlPart:
Columns("B:B").Select Selection.Replace What:="/OQ/", Replacement:="/OM/", LookAt:=xlPart, SearchOrder:=xlByRows, _ MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False Range("A1").Select Ma quello che non capisco è perchè poi se eseguo questa macro che ho registrato poi non mi fa nessuna sostituzione (ovviamente dopo aver ripristinato il contenuto della colonna B come era prima |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Oct 2005
Città: Meleé Island
Messaggi: 275
|
Ehm...svelato l'inghippo
![]() Le celle contenevano il valore /0Q/ e non /OQ/ ![]() La macro registrata l'avevo fatta per un foglio ad hoc ma poi quando l'ho eseguita nel foglio che mi interessava ecco che non funzionava! Ora però ho un altro problema e stavolta sono sicuro che non ci sono errori di battitura: lo stesso codice lo voglio utilizzare in celle contenenti una data per cambiare il mese. Quindi 08/08/1998 voglio che diventi 08/02/1998. Se utilizzo: Columns("G").Replace What:="/08/", Replacement:="/02/", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False non succede nulla |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Oct 2005
Città: Meleé Island
Messaggi: 275
|
up
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Non mi è mai capitato di fare un replace simile e adesso ho troppo sonno per sperimentare.
![]() La mia è solo una supposizione ma immagino che il mancato funzionamento sia dovuto al fatto che per excel le date non sono altro che numeri interi e quindi ciò che cerchi non venga trovato. Forse dovresti ricorrere a un if e tramite mid verificare se la porzione di stringa relativa al mese è pari a 08 e, in caso affermativo, concatenare giorno già presente, 02, e anno. Domani faccio una prova. Notte. ![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Allora, dopo qualche sbattimento mi sembra di aver trovato una soluzione
Codice:
Sub sostituisci() Dim r As Range Dim cella As Range Dim testo As String Set r = Sheets(1).Columns(7).Cells For Each cella In r If Mid(cella, 4, 2) = "08" Then testo = Left(cella, 3) & "02" & Right(cella, 5) r.Replace What:=cella.Value, _ Replacement:=Format(testo, "mm/dd/yyyy"), _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ SearchFormat:=False End If Next cella End Sub ![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
boh...credo che lui cmq capisca il formato giusto....anche se glielo metti all'inglese lui comunque capisce quale è il mese...
PS: ho cmq provato ad invertirlo in dd/mm/yyyy e gli piace lo stesso ![]() l'unica cosa che chiaramente nn puoi fare è mettere il formato in italiano ![]()
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: Jul 2007
Messaggi: 1092
|
Quote:
Ciao zuper. Ho fatto alcune prove prima di venire a capo del suo problema e se scrivo Replacement:=Format(testo, "dd/mm/yyyy"), _ 09/08/2003 mi viene convertito in 02/09/2003, 12/08/2000 mi diventa 02/12/2000 e così via. ![]() |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Mar 2001
Città: PV Milano Nord
Messaggi: 3851
|
Quote:
![]() è impostato il REPLACEMENT format...il che significa che comunque lui sostituisce il valore e pure il formato
__________________
"W la foca, che dio la benedoca"
poteva risolvere tutto la sinistra negli anni in cui ha governato e non l'ha fatto. O sono incapaci o sta bene anche a "loro" cosi. L'una o l'altra inutile scandalizzarsi.[plutus] |
|
![]() |
![]() |
![]() |
#13 |
Member
Iscritto dal: Oct 2005
Città: Meleé Island
Messaggi: 275
|
Grazie a tutti per i consigli.
![]() Rimane solo una perplessità: perchè se registro la macro utilizzando la funzione "trova e sostituisci" (che funziona) quando poi la vado a rieseguire non mi cambia nulla. In pratica se ho una data 02/02/2009 per cambiare solo il mese cerco /02/ e lo sostituisco con p.e. /03/ (in questo modo mi evito di cambiare anche il giorno in 03). La ricerca e la sostituzione così fatta funziona perfettamente. Ora però dopo aver reimpostato le date con il mese a febbraio, quando rieseguo la macro così registrata non succede nulla. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:38.