Ho una colonna, che ha una virgola separata da valori all'interno di ogni cella che assomigliano a questo
0.1, 0.2,0.3, 0.4,0.5, 0.8,1.0
1.5, 1.6,2.0, 10.6,10.9, 15.2,30.75
20, 0.25,280.2, 0.29,300.2, 423,530.76
Come una stringa di testo.
L'obiettivo è quello di rimuovere lo zero iniziale davanti al decimale, ma solo quando non ci sono altre cifre (incluso un altro 0) davanti ad esso uso la funzione di sostituzione di ricerca vba:
Opzione esplicita
Public Sub Replace0dot (Facoltativo da Manichino come byte)
Colonne ("A"). Sostituisci cosa: "0.", _
Sostituzione: = ".", _
LookAt: = xlPart, _
SearchOrder: = xlByRows, _
MatchCase: = False, _
SearchFormat: = False, _
ReplaceFormat: = False
Application.ScreenUpdating = True
End Sub
e finisco con questo:
.1, .2,.3, .4,.5, .8,1
1.5, 1.6,2, 1.6,1.9, 15.2,3.75
2, .25,28.2, .29,30.2, 423,53.76
Rimuove tutte le istanze di lead 0.con ., quindi vedi 10.6diventa 1.6. Ma dovrebbe rimanere 10.6 Come posso ottenere un equivalente sostitutivo della ricerca che mi dà:
.1, .2,.3, .4,.5, .8,1
1.5, 1.6,2, 10.6,10.9, 15.2,30.75
20, .25,280.2, .29,300.2, 423,530.76
??? Sembra che dovrebbe essere non concatenato e ricatenato per raggiungere l'obiettivo.
Splitte puoi anche usare espressioni regolari per cercare ([^0-9])0\.un sostituto $1.. Puoi trovare molti tutorial in rete sull'uso delle espressioni regolari in VBA.
splito regular expressionsquesti potrebbero funzionare. Uno di voi ha intenzione di scrivere una risposta? Suppongo che ci dovrebbe essere qualche se / quindi per distinguere tra 0.e ([^0-9])0\.. Non sono un programmatore, anche se cerco di essere logico quando scrivo la maggior parte delle volte.

