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.6
diventa 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.
Split
te 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.
split
o regular expressions
questi 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.