|
|||||||
|
|
|
![]() |
|
|
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:51.



















