Sunteți pe pagina 1din 9

Cadenas de texto en VBA

inShar e

Existen varias funciones en VBA que podemos utilizar para manipular cadenas de texto. A continuacin revisaremos algunas de estas funciones VBA y observaremos el resultados de cada una de ellas. Para iniciar con esta revisin, debes colocar un botn de comando dentro de una hoja de Excel y despus hacer doble clic sobre l para introducir el cdigo.

Unir cadenas de texto


Para unir dos (o ms) cadenas de texto podemos utilizar el operador &. Observa el siguiente cdigo:

El resultado de este cdigo es el siguiente:

La funcin Left
La funcin Left en VBA nos ayuda a extraer un nmero determinado de caracteres a la izquierda de la cadena de texto.

En el cdigo he especificado los 7 caracteres a la izquierda de la cadena de texto. El resultado es el siguiente:

La funcin Right
La funcin Right nos permite extraer caracteres a la derecha de una cadena de texto. Observa el siguiente cdigo:

En esta funcin la cuenta de caracteres se hace de derecha a izquierda siendo el ltimo carcter de la cadena de texto el primero que extraer la funcin Right. Para este ejemplo he pedido los ltimos 5 caracteres a la derecha de la cadena de texto:

La funcin Len
La funcin Len nos ayuda a conocer la longitud de una cadena de texto, es decir, la cantidad de caracteres que conforman a una cadena.

La funcin Len contar cada uno de los caracteres de la cadena y regresar un nmero:

La funcin InStr
La funcin InStr devuelve la posicin de un carcter dentro de la cadena. Supongamos que quiero encontrar la posicin de la letra M dentro de la cadena que contiene el valor Hola Mundo.

Es importante resaltar que la funcin InStr es sensible a maysculas y minsculas. Observa cmo he especificado buscar la letra M (mayscula) y el resultado de la funcin es el siguiente:

La funcin InStr encontr la letra M en la posicin nmero 6 comenzando desde la izquierda. Si en lugar de la letra M busco la letra m (minscula), la funcin InStr devolver el valor 0 (cero) indicando que no ha encontrado dicha letra. Adems de indicar letras individuales en la funcin InStr, tambin podemos especificar palabras completas por ejemplo:

cadena = "Hola Mundo" InStr (cadena, "Mundo")

Por ejemplo, al buscar la palabra Mundo dentro de la cadena de texto obtendremos como resultado la posicin nmero 6 ya que en esa posicin comienza la palabra Mundo.

La funcin Mid
Con la funcin Mid podemos extraer una subcadena de otra cadena de texto con tan solo especificar la posicin inicial de la subcadena y su longitud. Observa el siguiente ejemplo:

La funcin Mid se mover a la posicin 15 de la cadena y a partir de ah contar 7 caracteres y devolver como resultado la cadena comprendida entre ambas posiciones. En nuestro ejemplo, la palabra funcion es la que se encuentra entre dichas posiciones.

Las funciones de texto en VBA nos ayudarn a manipular adecuadamente las cadenas de texto y podremos obtener los resultados que necesitamos. Artculos relacionados Funciones VBA Variables en VBA

Encontrar caracteres de derecha a izquierda en Excel


inShar e1

En los pases occidentales utilizamos un sistema de escritura con una direccin de izquierda a derecha y los sistemas computacionales reflejan dicho comportamiento. Excel no es la excepcin y sus funciones de bsqueda analizan las cadenas de texto en esa misma direccin. Si alguna vez has intentado hacer una bsqueda de derecha a izquierda te habrs dado cuenta que es un objetivo difcil de conseguir dada la naturaleza de las funciones de Excel. Pero Por qu alguien querra realizar una bsqueda de derecha a izquierda?

Motivo de la bsqueda de derecha a izquierda


La razn por la que la mayora de los usuarios de Excel intenta realizar una bsqueda de derecha a izquierda es porque estn buscando la ltima aparicin de una palabra o carcter dentro de una cadena de texto. El razonamiento se basa en la siguiente lgica: Si busco de izquierda a derecha la ltima aparicin de una palabra, obtendr el mismo resultado si busco la primera aparicin de la palabra pero de derecha a izquierda.

Si quiero encontrar la ltima aparicin de la palabra mam y hago una bsqueda de izquierda a derecha, entonces tengo que preguntarme si la instancia encontrada es efectivamente la ltima aparicin, de lo contrario debo realizar otra bsqueda. Sin embargo, si hago una bsqueda de derecha a izquierda, no tengo que hacerme esa pregunta, sino que simplemente busco la primera aparicin de la palabra para llegar a la misma posicin. Este razonamiento es excelente y de hecho es la mejor alternativa a implementar cuando utilizamos lenguajes de programacin, pero nos encontramos con cierta dificultad si queremos hacerlo con funciones de Excel. Por esta razn, hoy mostrar dos alternativas de cmo

encontrar caracteres o palabras en Excel como si estuviramos haciendo una bsqueda de derecha a izquierda.

Frmula para encontrar la ltima aparicin


A continuacin te mostrar una frmula que nos ayuda a obtener la posicin de la ltima aparicin de una palabra dentro de una cadena de texto. En esta frmula, 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 lgica de esta frmula es encontrar el nmero de apariciones de la palabra dentro de la cadena de texto original para saber cul es la ltima aparicin y entonces reemplazarla por un carcter especial, que en este caso es @. Una vez hecho este reemplazo ser cuestin de encontrar la posicin de dicho carcter especial para conocer la posicin de la ltima aparicin de la palabra. Observa el comportamiento de esta frmula:

La frmula devuelve el valor 48 que es precisamente la posicin de la letra m que da inicio a la ltima aparicin de la palabra mam dentro de la cadena de texto. Como puedes observar, la frmula 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 posicin de la ltima aparicin de la palabra. Si quieres saber ms sobre esta frmula, te recomiendo leer el artculo Encontrar la posicin de la ltima aparicin de una palabra en Excel donde explico paso a paso la lgica utilizada para el desarrollo de la frmula.

La funcin InStrRev en VBA


Aunque la frmula mostrada anteriormente resuelve el problema de encontrar la posicin de la ltima aparicin 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 funcin VBA que nos ayudar a encontrar caracteres de derecha a izquierda en Excel. La funcin InStrRev devuelve la posicin de la primera aparicin de un carcter dentro de una cadena de texto empezando por la derecha. Es importante mencionar que, aunque la bsqueda se hace de derecha a izquierda, la posicin devuelta es una posicin respecto al

primer carcter de la izquierda. Pero antes de hacer un ejemplo revisemos los cuatro argumentos de la funcin InStrRev:

String (obligatorio): La cadena de texto original. StringMatch (obligatorio): La palabra o carcter que se desea encontrar. Start (opcional): La posicin donde inicia la bsqueda. Si se omite se inicia a partir del ltimo carcter de la cadena de texto original. Compare (opcional): El tipo de comparacin que se realizar: 0 = Comparacin binario, 1 = Comparacin textual, 2 = Comparacin basada en basada de datos.

Si la funcin InStrRev no encuentra la palabra o carcter dentro de la cadena de texto original, entonces devolver el valor cero. Para utilizar la funcin InStrRev en mi hoja de Excel crear una funcin definida por el usuario (UDF) que reciba tanto la cadena original como la palabra a buscar y entonces devuelva el resultado de la funcin InStrRev:

1 2 3 4 5

Function ENCONTRARINV(cadena As String, palabra As String) As Long ENCONTRARINV = InStrRev(cadena, palabra) End Function

Esta funcin es muy sencilla y nos devuelve el resultado correcto, que adems concuerda con la posicin que obtuvimos anteriormente con la frmula de Excel:

En cualquiera de los dos ejemplos anteriores hemos encontrado la posicin de la ltima aparicin de una palabra. Si quieres encontrar la posicin pero contando desde la derecha ser suficiente con hacer una resta entre la longitud de la cadena original y el resultado de la funcin anterior. Por ejemplo:

En este ejemplo, el nmero 48 indica la posicin de la palabra mam empezando a contar de la izquierda y el nmero 11 la posicin 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 frmula desarrollada como la funcin InStrRev en tus bsquedas. Artculos relacionados Cadenas de texto en VB

S-ar putea să vă placă și