Hola a todos!
Hace unos días recibí una consulta en la que me preguntaban cómo se podía insertar un cero en una cadena de texto (o numérica) después de un carácter determinado. Por ejemplo, si tenemos esto:
a1sAttPOMMJ2 y queremos que se inserte un cero después de cada A mayúscula, es decir que quedase así: a1sA0ttPOMMJ2
Para poder realizar este trabajo, he optado por descomponer la cadena de texto inicial mediante un loop que recorra todos los caracteres y en el momento que encuentre la A, entonces insertamos un 0 en la nueva cadena.
Es decir, vamos a utilizar este código y compondremos una sencilla función que nos facilitará la tarea:
Public Function AÑADE_0(Micelda As String)
'Declaramos variables
Dim i As Double, cero As Variant
Dim letr As String
With Sheets(1)
For i = Len(Micelda) To 1 Step -1
'Si la letra es una A activamente la variable "cero"
If Mid(Micelda, i, 1) = "A" Then
cero = 0
End If
'Añadimos el cero a la nueva cadena
letr = Mid(Micelda, i, 1) & cero & letr
cero = vbNullString
Next i
AÑADE_0 = (letr)
End With
End Function
Los ceros los vamos a insertar por la derecha, después del carácter indicado.
El resultado es que podemos utilizar la UDF (que he denominado AÑADE_0) como si se tratase de otra función más y obtener este resultado:
Descarga el archivo de ejemplo pulsando en: INSERTAR UN CERO DESPUÉS DE UN CARÁCTER DETERMINADO EN UNA CADENA ALFANUMÉRICA
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!