La función REPLACE reemplaza una parte de una cadena de texto por otra cadena de texto dadas una posición inicial a partir de la cual se desea realizar el reemplazo, un número de caracteres a reemplazar y la cadena de texto por la que se quiere reemplazar los caracteres referidos.
REPLACE(
old_text,
start_num,
num_chars,
new_text
)
- old_text: Texto en el que se desea realizar el reemplazo o nombre de la columna que contiene las cadenas de texto en las que realizar el reemplazo.
- start_num: Posición inicial de la cadena de caracteres a eliminar en old_text (el carácter situado en el extremo izquierdo ocupa la posición 1).
- num_chars: Número de caracteres a eliminar en old_text.
- new_text: Cadena de caracteres a insertar en lugar del texto eliminado.
La función REPLACE devuelve una cadena de texto.
Teniendo en cuenta que la longitud de los caracteres a reemplazar en la cadena de texto inicial no tiene por qué coincidir con la longitud de la cadena de texto por la que se va a realizar el reemplazo, se define mejor esta función diciendo que elimina un fragmento de la cadena de texto -fragmento definido por una posición inicial y un número de caracteres- e inserta en dicha posición una nueva cadena de texto: Si la cadena a insertar es de una longitud mayor que la cadena a eliminar, el resultado devuelto por REPLACE tendrá una longitud mayor que la cadena de texto original. Y al contrario: si la cadena de texto a insertar es de una longitud menor que la cadena de texto a eliminar, el resultado devuelto por REPLACE tendrá una longitud menor que la cadena de texto original. En el siguiente ejemplo se elimina una cadena de 3 caracteres a partir de la posición 2 y se reemplaza por un único carácter:
La posición inicial deberá ser un número entero mayor que cero. En otro caso, la función devolverá un error.
Si start_num es mayor que la longitud de old_text, la función REPLACE añadirá al final de old_text la nueva cadena. Así, en el siguiente ejemplo se reemplaza el carácter que ocupa la décima posición por el carácter "_", cuando todas las cadena de texto originales tienen una longitud menor que 10:
Si se especifica 0 como número de caracteres a reemplazar, la función simplemente inserta la nueva cadena de texto en la posición indicada. En el siguiente ejemplo se reemplaza una cadena de 0 caracteres a partir de la posición 2 por un carácter "_". Nótese cómo, simplemente, se ha insertado dicho carácter en la posición indicada:
Si la posición en la que realizar el reemplazo es la 1 y el número de caracteres a reemplazar es 0, REPLACE es equivalente a la función CONCATENATE (lo mismo puede decirse si la posición en la que realizar el reemplazo es mayor que la longitud de old_text, pues la cadena a insertar simplemente se concatena detrás de old_text).
En cualquier caso, el número de caracteres a reemplazar no podrá ser un número negativo pues, en ese caso, REPLACE devolverá un error.
En el siguiente ejemplo se utiliza la función SEARCH para buscar la primera aparición de la letra "a" en la columna "Manufacturer", y la función REPLACE para sustituir dos caracteres a partir de dicha posición por "__". La función REPLACE se incluye como primer argumento de la función IFERROR para que, en aquellos casos en los que no se encuentre ninguna letra "a" (ocasiones en las que la función SEARCH va a devolver un error), se devuelva un resultado controlado (un Blank en este caso).
Nótese cómo, en la última fila, la letra "a" ocupa la última posición de la cadena de texto por lo que, al reemplazarla por "__", la longitud de la cadena devuelta por REPLACE aumenta en uno: