Encontrar Caracteres de Derecha A Izquierda en Excel

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 4

Encontrar caracteres de

derecha a izquierda en
Excel
En los países occidentales utilizamos un sistema de escritura con una dirección
de izquierda a derecha y los sistemas computacionales reflejan dicho
comportamiento. Excel no es la excepción y sus funciones de búsqueda
analizan las cadenas de texto en esa misma dirección.

Si alguna vez has intentado hacer una búsqueda de derecha a izquierda te


habrás dado cuenta que es un objetivo difícil de conseguir dada la naturaleza
de las funciones de Excel. Pero ¿Por qué alguien querría realizar una
búsqueda de derecha a izquierda?

Motivo de la búsqueda de derecha a izquierda


La razón por la que la mayoría de los usuarios de Excel intenta realizar una
búsqueda de derecha a izquierda es porque están buscando la última aparición
de una palabra o carácter dentro de una cadena de texto. El razonamiento se
basa en la siguiente lógica: Si busco de izquierda a derecha la última aparición
de una palabra, obtendré el mismo resultado si busco la primera aparición de la
palabra pero de derecha a izquierda.

Si quiero encontrar la última aparición de la palabra “mamá” y hago una


búsqueda de izquierda a derecha, entonces tengo que preguntarme si la
instancia encontrada es efectivamente la última aparición, de lo contrario debo
realizar otra búsqueda. Sin embargo, si hago una búsqueda de derecha a
izquierda, no tengo que hacerme esa pregunta, sino que simplemente busco la
primera aparición de la palabra para llegar a la misma posición.
Este razonamiento es excelente y de hecho es la mejor alternativa a
implementar cuando utilizamos lenguajes de programación, pero nos
encontramos con cierta dificultad si queremos hacerlo con funciones de Excel.
Por esta razón, hoy mostraré dos alternativas de cómo encontrar caracteres o
palabras en Excel como si estuviéramos haciendo una búsqueda de derecha
a izquierda.

Fórmula para encontrar la última aparición


A continuación te mostraré una fórmula que nos ayuda a obtener la posición de
la última aparición de una palabra dentro de una cadena de texto. En esta
fórmula, la cadena de texto original se encuentra en B1 y la palabra buscada en
B2:

=ENCONTRAR("@",SUSTITUIR(B1,B2,"@",(LARGO(B1)-LARGO(SUSTITUIR(B1,

B2,"")))/LARGO(B2)))

La lógica de esta fórmula es encontrar el número de apariciones de la palabra


dentro de la cadena de texto original para saber cuál es la última aparición y
entonces reemplazarla por un carácter especial, que en este caso es “@”. Una
vez hecho este reemplazo será cuestión de encontrar la posición de dicho
carácter especial para conocer la posición de la última aparición de la palabra.
Observa el comportamiento de esta fórmula:

La fórmula devuelve el valor 48 que es precisamente la posición de la letra “m”


que da inicio a la última aparición de la palabra “mamá” dentro de la cadena de
texto. Como puedes observar, la fórmula no es nada simple debido a la
naturaleza de las funciones de Excel de buscar de izquierda a derecha, pero
aun así con un poco de pericia podemos encontrar la posición de la última
aparición de la palabra.

Si quieres saber más sobre esta fórmula, te recomiendo leer el


artículo Encontrar la posición de la última aparición de una palabra en
Excel donde explico paso a paso la lógica utilizada para el desarrollo de la
fórmula.

La función InStrRev en VBA


Aunque la fórmula mostrada anteriormente resuelve el problema de encontrar
la posición de la última aparición de una palabra, el hecho de utilizar varias
funciones hace que para grandes cantidades de datos el tiempo de
procesamiento sea considerable. Afortunadamente podemos encontrar una
función VBA que nos ayudará a encontrar caracteres de derecha a izquierda
en Excel.

La función InStrRev devuelve la posición de la primera aparición de un carácter


dentro de una cadena de texto empezando por la derecha. Es importante
mencionar que, aunque la búsqueda se hace de derecha a izquierda, la
posición devuelta es una posición respecto al primer carácter de la izquierda.
Pero antes de hacer un ejemplo revisemos los cuatro argumentos de
la función InStrRev:

 String (obligatorio): La cadena de texto original.


 StringMatch (obligatorio): La palabra o carácter que se desea encontrar.
 Start (opcional): La posición donde inicia la búsqueda. Si se omite se
inicia a partir del último carácter de la cadena de texto original.
 Compare (opcional): El tipo de comparación que se realizará: 0 =
Comparación binario, 1 = Comparación textual, 2 = Comparación basada
en basada de datos.

Si la función InStrRev no encuentra la palabra o carácter dentro de la cadena


de texto original, entonces devolverá el valor cero. Para utilizar la función
InStrRev en mi hoja de Excel crearé una función definida por el usuario (UDF)
que reciba tanto la cadena original como la palabra a buscar y entonces
devuelva el resultado de la función InStrRev:

1 Function ENCONTRARINV(cadena As String, palabra As String) As Long


2
3 ENCONTRARINV = InStrRev(cadena, palabra)
4
5 End Function

Esta función es muy sencilla y nos devuelve el resultado correcto, que además
concuerda con la posición que obtuvimos anteriormente con la fórmula de
Excel:

En cualquiera de los dos ejemplos anteriores hemos encontrado la posición de


la última aparición de una palabra. Si quieres encontrar la posición pero
contando desde la derecha será suficiente con hacer una resta entre la longitud
de la cadena original y el resultado de la función anterior. Por ejemplo:
En este ejemplo, el número 48 indica la posición de la palabra “mamá”
empezando a contar de la izquierda y el número 11 la posición si se realiza la
cuenta comenzando por la derecha. Ahora ya conoces dos alternativas
para encontrar caracteres de derecha a izquierda en Excel, descarga el
libro de trabajo y utiliza tanto la fórmula desarrollada como la función InStrRev
en tus búsquedas.

Artículos relacionados
Cadenas de texto en VBA

También podría gustarte