Tengo una columna, que tiene valores separados por comas dentro de cada celda que se ve así
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
Como una cadena de texto.
El objetivo es eliminar el cero inicial delante del decimal, pero solo cuando no hay otro dígito (incluido otro 0) delante, utilizo la función de búsqueda de reemplazo vba:
Opción explícita Public Sub Replace0dot (Opcional byDummy como Byte) Columnas ("A"). Reemplazar qué: "0.", _ Reemplazo: = ".", _ LookAt: = xlPart, _ SearchOrder: = xlByRows, _ MatchCase: = False, _ SearchFormat: = False, _ Reemplazar formato: = falso Application.ScreenUpdating = True End Sub
y termino con esto:
.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
Elimina todas las instancias de liderazgo 0.
con .
, por lo que ves se 10.6
convierte 1.6
. Pero debería permanecer. 10.6
¿Cómo puedo obtener una búsqueda que reemplace el equivalente que me da:
.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
??? Parece que tendría que ser sin concatenar y volver a concatenar para lograr el objetivo.
Split
, también puede usar expresiones regulares para buscar ([^0-9])0\.
un reemplazo para $1.
. Puede encontrar muchos tutoriales en la red sobre el uso de expresiones regulares en VBA.
split
o regular expressions
estos pueden funcionar. ¿Alguno de ustedes tenía la intención de escribir una respuesta? Supongo que tendría que haber algunos si / entonces para distinguir entre 0.
y ([^0-9])0\.
. No soy programador, aunque trato de ser lógico cuando escribo la mayor parte del tiempo.